我在我的应用程序中有一个奇怪的行为......有一个ListView,奇数项目有#ffffff
背景,甚至项目有#f2f7f7
,看起来像这样:
然而,只要我开始滚动列表,偶数项就会略微改变颜色,变成#f7f7f7
,如下所示:
有什么想法吗?如果您需要更多信息,请询问。我对这种行为感到不满。
其他信息:
我在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]);
答案 0 :(得分:4)
android:scrollingCache="false"
解决了这个问题。
答案 1 :(得分:2)
滚动列表时会重复使用用于项目的视图(不需要创建新的视图)。因此,当您向下滚动列表时,位置0处的项目可能会在位置10处呈现。它将是相同的View对象,并且在显示getView之前将使用convertView参数设置为此特定视图 - 因此您可以填充它与数据(并指定您的样式)。这只是一个优化。
因此,每次在列表适配器中调用getView时,都需要指定项目的背景颜色。
答案 2 :(得分:1)
以编程方式尝试此操作。 yourListView.setScrollingCacheEnabled(false);