ListView not responding to click events in Android

android, android-listview, button, java, onclicklistener

Solution

add

android:descendantFocusability="blocksDescendants"

to the top ViewGroup of your items

upd:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" 
    android:gravity="center_vertical" 
    android:paddingTop="2dp"
    android:paddingBottom="2dp"
    android:background="@android:color/transparent"
    android:descendantFocusability="blocksDescendants"
     >

    <ImageView
        android:id="@+id/profile_picture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/mr_unknown" 
        android:contentDescription="@string/profile_picture_description"
        android:paddingRight="3dp"/>

    <TextView
        android:id="@+id/real_life_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/FriendListText"/>
    <Button 
        android:id="@+id/ping_friend"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ping Friend"
        />
</LinearLayout>

Problem

I have a custom `ListView` item as follows: ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:gravity="center_vertical" android:paddingTop="2dp" android:paddingBottom="2dp" android:background="@android:color/transparent"> <ImageView android:id="@+id/profile_picture" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/mr_unknown" android:contentDescription="@string/profile_picture_description" android:paddingRight="3dp"/> <TextView android:id="@+id/real_life_name" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/FriendListText"/> <Button android:id="@+id/ping_friend" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ping Friend" /> </LinearLayout> ``` which is used in this ListView: ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@color/white" tools:context=".FriendListActivity" > <ListView android:id="@+id/friend_list" android:layout_width="match_parent" android:layout_height="wrap_content" android:fastScrollEnabled="true" android:smoothScrollbar="false" style="@style/ListViewStyle" > </ListView> </LinearLayout> ``` Now i want that when ever Ping Friend button is clicked on any list item it should show an AlertDialog. I have used this code... ``` friendListAdapter = new FriendListAdapter(FriendListActivity.this, friends); friendListView = (ListView) findViewById(R.id.friend_list); friendListView.setAdapter(friendListAdapter); downloadFriends_async(); //This method downloads all the *friends* into ListView from Database. *Its working correctly*. friendListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); alertDialogBuilder.setTitle("Hello!!!"); alertDialogBuilder .setMessage("Do you want to exit?") .setCancelable(false) .setPositiveButton("Yes",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { FriendListActivity.this.finish();}}) .setNegativeButton("No",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { dialog.cancel();}}); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } }); ``` There is no error shown. Problem is that its not responding to Click on Button and no AlertDialog appears at all. For button i also tired adding inside `onItemClick` of ListView: ``` public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Button btnPingFriend = (Button) findViewById(R.id.ping_friend); btnPingFriend.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { //Rest of AlertDialog Code... } ``` Still no response. Please suggest.

Original source