2015-09-06 124 views
0

我有一個Listview,我想在其中設置先前選擇的項目的背景。我試圖做到這一點如下:無法設置某些Listview項目的默認背景顏色

public View getView(final int position, View convertView, ViewGroup parent){ 
------------------ 
------------------ 
if(listOfPosts.get(position).isSelected()) 
     rowView.setBackgroundColor(Color.GRAY); 
----------------- 
} 

但是,可能由於視圖回收,其他一些項目的背景也正在改變。如何解決這個問題?

+0

凡使用貼代碼適配器? –

回答

1

正如你猜測的那樣,它確實是由視圖回收造成的。

當視圖被回收時,其屬性不會「重置」或變回默認值 - 您完全按照原樣獲取它。這意味着你的代碼必須確保所有的視圖屬性都被正確設置,即使你只是想要「默認」(或你的佈局文件中的值)。

在你的情況,你只需要一個else部分將其添加到它,並設置默認背景爲您排:

if (listOfPosts.get(position).isSelected()) 
    rowView.setBackgroundColor(Color.GRAY); 
else 
    rowView.setBackgroundColor(DEFAULT_COLOR);   
相關問題