无法以编程方式设置ExpandableListView的子项的背景

时间:2015-12-13 19:13:39

标签: android switch-statement expandablelistview

我有一个ExpandableListView,我希望每个孩子显示不同的背景,具体取决于组和子位置。到目前为止,我是通过适配器活动在@Override getChildView

中完成的

以下是我的代码示例

        @Override
public View getChildView(int groupPosition, final int childPosition,
                         boolean isLastChild, View convertView, ViewGroup parent) {

    final String childText = (String) getChild(groupPosition, childPosition);



    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.list_item, null);
    }
switch (groupPosition) {
        case 0:
            switch(childPosition){ //
                case 0:
                    convertView.setBackgroundResource(R.color.a1);
                    break;
                case 1:
                    convertView.setBackgroundResource(R.color.a2);
                    break;
                case 3:
                    convertView.setBackgroundResource(R.color.a3);
                    break;
                case 4:
                    convertView.setBackgroundResource(R.color.a4);
                    break;
            }
            break;
        case 1:
            switch(childPosition){
                case 0:
                    convertView.setBackgroundResource(R.color.b1);
                    break;
                case 1:
                    convertView.setBackgroundResource(R.color.b2);
                    break;
                case 3:
                    convertView.setBackgroundResource(R.color.b3);
                    break;
                case 4:
                    convertView.setBackgroundResource(R.color.b4);
                    break;
            }
            break;
        case 2:
            switch(childPosition)
                case 0:
                    convertView.setBackgroundResource(R.color.c1);
                    break;
                case 1:
                    convertView.setBackgroundResource(R.color.c2);
                    break;
                case 3:
                    convertView.setBackgroundResource(R.color.c3);
                    break;
                case 4:
                    convertView.setBackgroundResource(R.color.c4);
                    break;
            }
            break;
    }

现在,问题在于,当我打开第二个(#1),第三个(#2)组父级时,子项的颜色与第一个(#0)组相似。

这个开关框架工作得很好,当然,“@ color”中的所有颜色都彼此不同。 任何提示?

1 个答案:

答案 0 :(得分:1)

创建视图时设置背景颜色。由于listviews循环视图,因此重新使用视图时颜色不会改变。