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

问题描述:

我有一个Listview,我想在其中设置先前选择的项目的背景。我试图做到这一点如下:无法设置某些Listview项目的默认背景颜色

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

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

+0

凡使用贴代码适配器? –

正如你猜测的那样,它确实是由视图回收造成的。

当视图被回收时,其属性不会“重置”或变回默认值 - 您完全按照原样获取它。这意味着你的代码必须确保所有的视图属性都被正确设置,即使你只是想要“默认”(或你的布局文件中的值)。

在你的情况,你只需要一个else部分将其添加到它,并设置默认背景为您排:

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