我有一个奇怪的问题。我正在设置列表视图的项目的背景颜色,如下所示:
@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是将视图作为优化进行回收。
我该如何解决这个问题?
答案 0 :(得分:1)
列表视图肯定是将视图作为优化进行回收。您应该查看有效的列表视图示例。
答案 1 :(得分:1)
绘制列表视图时,将始终调用getView。当我们做一个小改动的例子做一个小卷轴时,就会调用它
如果要将颜色设置为特定行,只需选中position
(getview的第一个参数)即可。