2014-09-21 141 views
0

今天,我在实现ListView的适配器时遇到了一个奇怪的问题。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的行改变它们​​的颜色?

回答

1

添加else语句颜色变化

if (testList.get(position).progress == 0){ 
     rowView.setBackgroundColor(Color.parseColor("#BDBDBD")); 
    } else { 
     rowView.setBackgroundColor(Color.parseColor("#Color of the other cells")); 
    } 
+0

谢谢,它工作得很好。但我仍然不明白为什么它没有别的工作的原因{} – 2014-09-21 11:24:24

+0

我认为,如果向上滚动,适配器不会始终创建新单元。如果已经有单元格,他将内容放入现有的单元格中。另外如果这些细胞有另一种颜色。 – FreshD 2014-09-21 11:27:58