我有一个带有自定义适配器的ListView,它使用EditText和TextView填充Items:
<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的功能。
我还尝试将descendantFocusability
的{{1}}设置为任何可用选项,但没有成功。
适配器没什么特别的,但我会根据要求提供源代码。其他所有内容都以相同的方式在另一个ListView
上完成并且有效。
答案 0 :(得分:1)
尝试在yout EditText
标记
android:focusable="true"
android:focusableInTouchMode="true"
答案 1 :(得分:0)
在适配器的setOnClickListener
方法中扩充列表项视图时为RelativeLayout
设置getView
。您的EditText
与父级不匹配,因此当您点击列表行的另一侧时,这必须起作用。
答案 2 :(得分:0)
在适配器类中的单个项目的视图上设置onTouchlistener。另外,您还必须管理列表的状态,以便在滚动列表时应禁用onTouch,而在不滚动时,onTouch应该照常工作。在我的项目中,在回收者视图上工作正常。应该也可以与ListView一起使用。