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>
本文详细解释了ListView.OnItemClickListener失效的原因,并提供了解决方案。通过在子条目中的view的根布局中添加特定属性,可以避免焦点被抢走,从而解决事件无法被外层view消费的问题。
&spm=1001.2101.3001.5002&articleId=51367805&d=1&t=3&u=8e172be5c18d4235b94db9c928f2a9b5)
7220

被折叠的 条评论
为什么被折叠?



