ListView与EditText和OnItemClickListener

时间:2016-08-05 09:32:47

标签: android listview click focusable

我有一个带有自定义适配器的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上完成并且有效。

3 个答案:

答案 0 :(得分:1)

尝试在yout EditText标记

中添加此代码
android:focusable="true"
android:focusableInTouchMode="true"

答案 1 :(得分:0)

在适配器的setOnClickListener方法中扩充列表项视图时为RelativeLayout设置getView。您的EditText与父级不匹配,因此当您点击列表行的另一侧时,这必须起作用。

答案 2 :(得分:0)

在适配器类中的单个项目的视图上设置onTouchlistener。另外,您还必须管理列表的状态,以便在滚动列表时应禁用onTouch,而在不滚动时,onTouch应该照常工作。在我的项目中,在回收者视图上工作正常。应该也可以与ListView一起使用。