Android ListView项目背景色

Android ListView项目背景色,android,listview,Android,Listview,今天,我在为ListView实现适配器时遇到了一个奇怪的问题 @Override public View getView(int position, View convertView, ViewGroup parent) { View rowView; if (convertView == null){ LayoutInflater inflater = (LayoutInflater) appContext.getSys

今天,我在为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的行更改其颜色?

在颜色更改中添加
else
语句

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

谢谢,效果很好。但是我仍然不明白为什么没有其他的{}它就不能工作。我想,如果你向上滚动,适配器并不总是创建新的单元格。如果已经有单元格,他会将内容放入现有单元格中。如果这些单元格有另一种颜色。