2014-01-06 85 views
0

我有ListViewArrayAdapter繼承自定義Adapter。我正在使用LinearLayout的一個自定義Checkable子類來突出顯示列表中最後選定的項目,其中它基本上將選中狀態映射到選定項目。當添加ImageButton時,duplicateParentState停止工作

列表項使用的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機制。

回答

0

時添加到列表項的ButtonImageButton「燕子」觸摸事件,因此它不會傳播到列表視圖,所以我不得不設置getView()imageButton.setTouchable(false)在我的自定義Adapter事實證明。

請注意,我第一次嘗試在我的佈局文件中設置android:touchable='falase',但它不起作用,所以我不得不以編程方式進行設置。

我已經找到了答案,在這2個SO問題:
ListView setOnItemClickListener not working by adding button
Click is not working on the Listitem Listview android

+0

是,ImageButton的是一個可點擊的視圖,它會消耗觸摸/點擊事件,因此該事件不會再回到父親佈局。如果您將textview設置爲可點擊,它也會具有相同的效果。 – Qing

相關問題