我有一个带有自定义适配器的ListView,它用EditText和TextView:填充项目
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/et_choice_prob"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="numberSigned"/>
<TextView
android:id="@+id/tv_choice_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/et_choice_prob"
android:layout_alignBaseline="@id/et_choice_prob"
android:layout_marginLeft="5dip"
/>
</RelativeLayout>
如果我想设置OnItemClickListener
,它永远不会被调用,因为EditText窃取了焦点。
另一个线程提到,我应该将focusable
设置为false
,这将取消实际编辑TextView的功能。
我还尝试将ListView
的descendantFocusability
设置为任何可用选项,但没有成功。
适配器没有做任何花哨的事情,但我会根据要求提供来源。其他一切都以相同的方式在另一个ListFragment
上完成并工作。
尝试在yout EditText
标签中添加此代码
android:focusable="true"
android:focusableInTouchMode="true"
在适配器的getView
方法中膨胀列表项视图时,为RelativeLayout
设置setOnClickListener
。您的EditText
和父级不匹配,所以当您单击列表行的另一侧时,这必须有效。
在适配器类中的单个项的视图上设置onTouchlistener。此外,您还必须管理列表的状态,以便在滚动列表时,onTouch应被禁用,而在不滚动时,onTouch应照常工作。在我的项目中,它在回收器视图上运行良好。也应该使用ListView。