2015-09-27 45 views
0

我知道我熟悉的問題存在一點點不同。 我在android上實現ListView。 此方法在點擊時應爲其着色。如何在android上onListItemClick方法給ListView上的所選項目着色方法

@Override 
    protected void onListItemClick(ListView l, View v, int position, longid) { 
     super.onListItemClick(l, v, position, id); 
     Language lng = lng.get(position); 
     l.getChildAt(position).setBackgroundColor(Color.GREEN); 
    } 

我的問題是,當我點擊項目時,其他項目被着色。 這是怎麼回事?

回答

1

爲什麼會發生這種情況?

其發生是因爲ListView's recycling mechanism

l.getChildAt(position)查看v 本身是否存在區別?


號解決您的問題,我建議你使用Selector改變行的顏色取決於狀態。

如:

1)創建一個選擇XML文件:listview_selector.xml

<?xml version="1.0" encoding="utf-8"?> 

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

    <item 
     android:state_focused="true" 
     android:drawable="@drawable/listview_selector_focused" /> 

    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/listview_selector_pressed" /> 

    </selector> 

2)選擇添加到您的ListView:

<ListView 
    ... 
    android:listSelector="@drawable/listview_selector" 
/> 
+0

它應該是「@如果您在可繪製文件夾中創建了文件listview_selector.xml,則在ListView中應用時可以繪製'而不是'@color'。像魅力一樣工作,謝謝。 –

+0

@LucasEduardo不客氣!這是一個錯字,謝謝...我編輯了我的答案。 – Rami

相關問題