无法设置某些Listview项目的默认背景颜色

时间:2015-09-06 13:02:57

标签: android android-listview listviewitem

我有一个Listview,我想在其中设置之前选择的项目的背景。我试图实现如下:

public View getView(final int position, View convertView, ViewGroup parent){
------------------
------------------
if(listOfPosts.get(position).isSelected())
        rowView.setBackgroundColor(Color.GRAY);
-----------------
}

但是,可能由于视图回收,其他一些项目的背景也在变化。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

正如您所猜测的,它确实是由视图回收造成的。

当视图被回收时,其属性不会被重置"或者更改回默认值 - 您可以完全按原样获得。这意味着您的代码必须确保正确设置所有视图属性,即使您只需要"默认" (或布局文件中的值)。

在您的情况下,您只需要为其添加else部分,并为其中的行设置默认背景:

if (listOfPosts.get(position).isSelected())
    rowView.setBackgroundColor(Color.GRAY);
else
    rowView.setBackgroundColor(DEFAULT_COLOR);