我正在从ArrayList和适配器的getView()方法填充ListView,我试图根据它正在显示的用户的属性设置特定项目的背景颜色。
下面粘贴的代码在滚动列表视图时给出了意想不到的结果。 当我进入应用程序时,显示的第一个项目正确着色,但是当我滚动列表时,它会将一些项目的颜色设置为绿色,尽管测试属性为0。
public View getView(int position, View convertView, ViewGroup parent) {
User user = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_user, parent, false);
}
if (user.newStatus > 0) convertView.setBackgroundColor(Color.GREEN);
//some other stuff happens here
return convertView;
}
如果我没有很好地解释,即使user.newStatus
为0,SOME ListViewItems也会变为绿色。
答案 0 :(得分:1)
这是因为ListView's recycling mechanism。
添加else
案例,将解决它:
if (user.newStatus > 0) {
convertView.setBackgroundColor(Color.GREEN);
} else {
convertView.setBackgroundColor(yourDefaultColor);
}