ListView项目更改背景颜色

时间:2011-12-30 16:59:14

标签: android listview background scroll flicker

我在我的应用程序中有一个奇怪的行为......有一个ListView,奇数项目有#ffffff背景,甚至项目有#f2f7f7,看起来像这样:

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]);

3 个答案:

答案 0 :(得分:4)

实际上,简单的东西。 android:scrollingCache="false"解决了这个问题。

答案 1 :(得分:2)

滚动列表时会重复使用用于项目的视图(不需要创建新的视图)。因此,当您向下滚动列表时,位置0处的项目可能会在位置10处呈现。它将是相同的View对象,并且在显示getView之前将使用convertView参数设置为此特定视图 - 因此您可以填充它与数据(并指定您的样式)。这只是一个优化。

因此,每次在列表适配器中调用getView时,都需要指定项目的背景颜色。

答案 2 :(得分:1)

以编程方式尝试此操作。 yourListView.setScrollingCacheEnabled(false);