I thought I knew how to catch list selection events in Android and then I regained consciousness. In my situation, I have a ListView that I populate with a custom view, all of the same class (let's call it the NewsChannel() class). NewsChannel consists of a LinearLayout of ImageViews and TextViews. When the list is displayed, the user may select a NewsChannel item in the list; I want to find out which list item was selected.
Also, I registered an onClickListener to one of the TextViews and that works fine: when the text is clicked on, an activity is launched which is looking for the position of the NewsChannel item in the list. So, here's what my code looks like: 1. Registering the onClickListener in the ListActivity: public class NewsListActivity extends ListActivity { . . . public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.news_list_format); ListView lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // When clicked, show a toast with the TextView text item_index = position; Toast.makeText(getApplicationContext(), "item clicked = " + position, Toast.LENGTH_SHORT).show(); } }); . . . 2. The layout for the ListView associated with NewsListActivity: <?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/ android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/wpaper_tile" > <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:dividerHeight="15dp" android:divider="@android:color/transparent" android:cacheColorHint="@android:color/transparent" android:scrollbars="none" /> <FrameLayout android:layout_width="fill_parent" android:layout_height="55dp" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:background="#88000000" /> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:src="@drawable/phonetop_bg" /> </RelativeLayout> 3. The NewsChannel layout: <?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/ android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <include layout="@layout/news_heading_format" android:id="@+id/news_heading_header"/> <ImageView android:id="@+id/news_channel_image" android:layout_width="88dp" android:layout_height="66dp" android:layout_alignParentLeft="true" android:layout_below="@id/news_heading_header" android:padding="10dp" /> <TextView android:id="@+id/news_channel_text" android:lines="4" android:inputType="textMultiLine" android:layout_toRightOf="@id/news_channel_image" android:layout_below="@id/news_heading_header" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </RelativeLayout> When I run the app, the ItemClickListener is never called. However, if NewsChannel were of a simpler type, say, a single ImageView or TextView embedded in the layout, the callback does get called. Any idea what I'm doing wrong? My whole goal is simply to let the activity launched by NewsChannel (not shown) to find out which instance of NewsChannel it was launched from. Thanks, in advance! -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en