2011-09-12 178 views
7

我有一個自定義顯示圖像和2 textview的列表視圖。我只是想突出顯示我列表中的一個項目。setItemChecked(int position,boolean value)not working?

首先,我使用listview的setSelection方法,我終於發現它不是它的方式,因爲它不工作在觸摸模式。

所以,我做了一些搜索,發現我需要使用setItemChecked方法。因此,我做了一個狀態列表的顏色。

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" android:drawable="@color/checkbox_bg_fcs" /> 
    <item android:drawable="@color/WHITE" /> 
</selector> 

我用它來設置我的自定義列表項的背景顏色。

從List活動中,我調用setItemChecked(position,true)到我的列表視圖的特定索引。

不幸的是,它似乎並沒有爲我工作。有什麼遺漏嗎?任何人都有幸運了嗎?

注**,我沒有從網絡中檢索列表視圖的數據。我只有在列表視圖中有數據後才執行setItemChecked。
我的listview也是單選模式。

+0

顯示您所用的setItemCheck事件。 –

+0

listview.setItemChecked(1,true); 這就是你需要的嗎?該調用位於onResume()中。我曾嘗試過很多職位(0,1,2,3,...) – PH7

+0

我只是好奇而已。 ''是做什麼的? –

回答

8

恐怕在Android Framework中這樣做並不容易。

爲了獲得爲setSelection(...)的工作,你的視圖必須實現follogin接口:android.widget.Checkable

你可能使用了一些佈局視圖(圖像和2的TextView的LinearLayout中可能?),它沒有實現Checkable接口。

你可以做的是創建一個實現Checkable的自定義View類。

查看以下可檢查的LinearLayout鏈接:

http://tokudu.com/2010/android-checkable-linear-layout/


如果你想改變的背景下,比重寫setChecked方法做你想做什麼。 很簡單的例子:

@Override 
public void setChecked(boolean checked) { 
    if (checked) { 
     this.setBackgroundColor(Color.RED); 
    } else { 
     setBackgroundColor(Color.BLACK); 
    } 
} 
+0

讓我知道它是否有幫助/工作,或者您需要更多解釋。 – balazsbalazs

+0

Thz爲輸入。不幸的是,這不是我所要求的。 setSelection在你引用的鏈接中工作得很好。但它缺乏視覺反饋。換句話說,我的列表項沒有被突出顯示,雖然它是正確的位置(列表視圖滾動到選擇)。僅供參考,我通過以下鏈接回答了您的答案。 :) – PH7

+0

thz。它突出顯示解決了我的問題。 :) – PH7

1

嘗試包括android:state_enabled屬性。

+0

sry。沒有解決。無論如何。 – PH7

8

組爲您的列表行背景選擇,它有資源,state_activated:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_activated="true" android:state_enabled="true" android:drawable="@android:color/black"></item> 
    <item android:drawable="@android:color/transparent" android:state_enabled="true"/> 

</selector> 
+1

這是在listview中突出顯示選定行的最簡單方法。如果listview沒有**屬性** choiceMode'android:choiceMode =「singleChoice」',它將不起作用 –

相關問題