我有一个Listview
,我想在其中设置之前选择的项目的背景。我试图实现如下:
public View getView(final int position, View convertView, ViewGroup parent){
------------------
------------------
if(listOfPosts.get(position).isSelected())
rowView.setBackgroundColor(Color.GRAY);
-----------------
}
但是,可能由于视图回收,其他一些项目的背景也在变化。如何解决这个问题?
答案 0 :(得分:1)
正如您所猜测的,它确实是由视图回收造成的。
当视图被回收时,其属性不会被重置"或者更改回默认值 - 您可以完全按原样获得。这意味着您的代码必须确保正确设置所有视图属性,即使您只需要"默认" (或布局文件中的值)。
在您的情况下,您只需要为其添加else
部分,并为其中的行设置默认背景:
if (listOfPosts.get(position).isSelected())
rowView.setBackgroundColor(Color.GRAY);
else
rowView.setBackgroundColor(DEFAULT_COLOR);