今天我在为ListView实现适配器时遇到了一个奇怪的问题。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;
if (convertView == null){
LayoutInflater inflater = (LayoutInflater) appContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = (View) inflater.inflate(R.layout.test_list_item, parent , false);
}else{
rowView = (ViewGroup) convertView;
}
Log.d(String.valueOf(position), String.valueOf(testList.get(position).progress));
if (testList.get(position).progress == 0){
rowView.setBackgroundColor(Color.parseColor("#BDBDBD"));
}
return rowView;
}
这是LogCat输出。
tag msg
D/0 : 100
D/1 : 90
D/2 : 80
D/3 : 70
D/4 : 0
D/5 : 0
D/6 : 0
D/0 : 100
D/1 : 90
D/2 : 80
D/3 : 70
D/4 : 0
D/5 : 0
D/6 : 0
正如您可以看到除0,1,2,3之外的所有索引,背景颜色应该更改。但是当活动开始时,除了第2行,第3行,第4行之外,所有行都会改变它们的背景颜色(第一行虽然它的进度大于0,但也会改变)。此外,当我一直向下滚动时,所有行似乎都会改变它们的背景颜色,包括行号2,3,4。如何只使用等于0的进度来改变颜色?
答案 0 :(得分:1)
在颜色变化中添加else
语句
if (testList.get(position).progress == 0){
rowView.setBackgroundColor(Color.parseColor("#BDBDBD"));
} else {
rowView.setBackgroundColor(Color.parseColor("#Color of the other cells"));
}