2011-12-30 405 views
1

我有我的應用程序一個奇怪的行爲...一個有一個ListView,其中奇數項具有#ffffff背景,甚至項目具有#f2f7f7,看起來像這樣:ListView的項目更改背景顏色

Activity start OR touching list (without release)

然而,當我開始滾動列表,偶數項略有變色,成爲#f7f7f7,像這樣:

When scrolling and after scroll release

有任何想法嗎?如果您需要更多信息,請詢問。我對這種行爲感到困惑。

附加信息:

我設置每個項目的背景色getView()方法,像這樣:

protected final int[] colors = new int[] { R.drawable.states_list_odd, R.drawable.states_list_even }; 
... 
// Alternates list items' background 
int colorPos = position % colors.length; 
convertView.setBackgroundResource(colors[colorPos]); 

回答

4

簡單的東西,實際上。 android:scrollingCache="false"解決了這個問題。

2

用於當您滾動列表中被重複使用項目的意見(沒有必要創建新的)。因此,當您向下滾動列表時,位置0處的項目可能會呈現在位置10.它將是相同的View對象,並且在顯示getView之前將使用設置爲此特定視圖的convertView參數進行調用 - 因此您可以填充它與數據(並指定您的樣式)。這只是一個優化。

因此,每次在您的列表適配器中調用getView時,您都需要指定該項目的背景顏色。

+0

我更新了我的問題,以顯示如何在'getView()'中設置每個項目的背景顏色。 – gnclmorais 2011-12-30 17:21:03

1

以編程方式嘗試此操作。 yourListView.setScrollingCacheEnabled(false);