无法设置某些 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);
我有一个 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);