listView.setOnItemClickListener失效的原因:
一般为子条目中的view(adapter中的view)的空间设置了点击事件,抢走了焦点,因为安卓控件的事件分配默认从外往内传,内部不消费事件,外层的view才能消费事件,
废话不多说,解决方案:
在子条目中的view(adapter中的view)的根布局中添加以下属性:
android:descendantFocusability="blocksDescendants"
例如 我写的一个demo中的item布局文件:
<?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="30dp"
android:descendantFocusability="blocksDescendants"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="jkgslakgabslkj"
android:textSize="16sp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="jkgslakgabslkj" />
</LinearLayout>