Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid ListView and Event Bubbling
    primarykey
    data
    text
    <p>I have an Android app with a ListView. I've created my own item layout that has a CheckBox, followed by two TextViews and a Button:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"&gt; &lt;CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dip"&gt;&lt;/CheckBox&gt; &lt;RelativeLayout android:layout_height="match_parent" android:id="@+id/relativeLayout1" android:layout_width="match_parent"&gt; &lt;Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button1" android:layout_alignParentRight="true" android:text="Button"&gt;&lt;/Button&gt; &lt;TextView android:id="@+id/textView1" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="TextView" android:layout_toLeftOf="@+id/button1" android:layout_alignTop="@+id/button1" android:layout_width="match_parent"&gt;&lt;/TextView&gt; &lt;TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="TextView" android:layout_below="@+id/textView1" android:layout_alignLeft="@+id/textView1" android:layout_alignRight="@+id/textView1"&gt;&lt;/TextView&gt; &lt;/RelativeLayout&gt; &lt;/LinearLayout&gt; </code></pre> <p>When the user taps on the row, I want different behaviour depending on if they tapped on the CheckBox, the Button or the row itself (i.e. anything other than the CheckBox or Button). Here's what I've tried to implement so far (using setOnItemClickListener):</p> <pre><code>package com.camelconsultants.shoplist; import java.util.ArrayList; import java.util.HashMap; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; public class HelloAndroid extends ListActivity implements OnItemClickListener { ArrayList&lt;HashMap&lt;String, String&gt;&gt; Items = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); GetData(); setListAdapter ( new SimpleAdapter ( this.getBaseContext(), Items, R.layout.multiitem, new String[]{ "Code", "Description" }, new int[]{ R.id.textView1, R.id.textView2 } ) ); ListView lv = getListView(); lv.setTextFilterEnabled( true ); lv.setOnItemClickListener( this ); } public void onItemClick( AdapterView&lt;?&gt; parent, View view, int position, long id ) { Toast.makeText ( getApplicationContext(), parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT ).show(); } void GetData() { HashMap&lt;String, String&gt; Item; try { JSONObject JsonObject = new JSONObject( this.getResources().getString(R.string.Json) ); JSONArray JsonArray = JsonObject.getJSONArray( "Items" ); for ( int i = 0; i &lt; JsonArray.length(); i++ ) { Item = new HashMap&lt;String, String&gt;(); Item.put( "Code", JsonArray.getJSONObject(i).getString("Code") ); Item.put( "Description", JsonArray.getJSONObject(i).getString("Description") ); Items.add( Item ); } } catch( JSONException Bummer ) { Bummer.printStackTrace(); } } } </code></pre> <p>When I run the application and click on one of the TextViews, nothing happens!</p> <p>What's the best way to approach this?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload