duplicateParentState在添加ImageButton时停止工作

时间:2014-01-06 14:14:16

标签: android android-listview imagebutton

我有一个ListView,其自定义Adapter继承自ArrayAdapter。我正在使用Checkable的自定义LinearLayout子类来突出显示列表中最后选择的项目,它基本上将已检查状态映射到所选项。

Adapter用于列表项的布局如下:

<com.wordlistdictionary.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="horizontal"
          android:layout_width="match_parent"
          android:layout_height="40dp">
<LinearLayout
    android:id="@+id/entry_text"
    android:layout_width="0dp"
    android:layout_weight="7"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:duplicateParentState="true"
    />

<TextView
    android:id="@+id/entry_number_of_occurences_1"
    android:textSize="9pt"
    android:typeface="monospace"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:textColor="@color/item_text_color_selector"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:duplicateParentState="true"
    />

<TextView
    android:id="@+id/entry_frequency_1"
    android:textSize="9pt"
    android:typeface="monospace"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:textColor="@color/item_text_color_selector"
    android:layout_gravity="center_vertical"
    android:layout_weight="2"
    android:duplicateParentState="true"/>

<ImageButton
    android:id="@+id/delete_entry_button_1"
    android:src="@drawable/delete_button_selector"
    android:layout_height="40dp"
    android:layout_width="40dp"
    android:layout_gravity="center_vertical"
    android:layout_marginRight="15dp"
    android:duplicateParentState="true"
    />
</com.wordlistdictionary.CheckableLinearLayout>

在我添加最后一个ImageButton视图并且它停止突出显示该点的文本之前,它正如我所期望的那样,最后一个被触摸的项目的文本颜色发生了变化。

有没有人遇到过这个以及你的解决方案是什么?

目前我正在考虑一种解决方法,即从我的自定义布局手动将选定状态传播到所有子视图,而不是仅仅更改布局视图本身的选定状态并依赖duplicateParentState机制。 / p>

1 个答案:

答案 0 :(得分:0)

事实证明,当添加到列表项时,ButtonImageButton“吞下”触摸的事件,因此它不会传播到列表视图,因此我必须设置imageButton.setTouchable(false)在我的自定义getView()的{​​{1}}中。

请注意,我首先尝试在布局文件中设置Adapter,但它不起作用,所以我必须以编程方式设置它。

我在这两个问题中找到了答案:
ListView setOnItemClickListener not working by adding button
Click is not working on the Listitem Listview android