2010-12-03 57 views
1

我有一個奇怪的問題。我設置列表視圖的項目的背景色如下:在ListView中回收的背景顏色

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 

    ... 

    if (status == true) { 
     row.setBackgroundColor(Color.argb(255,0,85,187)); 
    } 
    else { 
     if (morestuff) { 
      row.setBackgroundColor(Color.argb(128,255,0,0)); 
     } 
    } 

    ... 
} 

這似乎工作。但是,當我滾動列表視圖,然後回來,一些行已獲取另一行的顏色,而不是由此代碼設置。我懷疑listview是作爲一個優化回收視圖。

我該如何解決這個問題?

回答

1

當繪製列表視圖時,將一直調用getView。簡單地採取它將被稱爲當我們做一個小的改變例子做一個小的滾動
如果你想設置顏色到一個特定的行,只需通過檢查position(getview的第一個參數)。

1

列表視圖明確地將視圖回收爲優化。您應該查看創意的有效列表視圖示例。