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

Not able to set the default background color of some Listview items

我有一个 Listview,我想在其中设置之前选择的项目的背景。我正在尝试通过以下方式实现此目的:

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

但是,可能是因为视图回收,其他一些项目的背景也发生了变化。如何解决这个问题?

如你所料,确实是视图回收造成的

当一个视图被回收时,它的属性不会 "reset" 或变回默认值 - 你得到它的原样。这意味着 您的 代码必须确保正确设置所有视图属性,即使您只需要 "default"(或布局文件中的值)也是如此。

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

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