无法以编程方式设置 ExpandableListView children 的背景
Can't set the background of ExpandableListView's children programmatically
我有一个 ExpandableListView,我希望每个 child 显示不同的背景,具体取决于组和 child 位置。到目前为止,我是在 @Override getChildView
中从适配器 activity 进行操作
这是我的代码示例
@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) 组 parent 时,children 的颜色与第一个 (#0) ) 组。
这个开关框架运行良好,当然,“@color”中的所有颜色都彼此不同。
有什么提示吗?
您在创建视图时设置了背景颜色。由于 listviews 回收视图,因此当视图被重新使用时颜色不会改变。
我有一个 ExpandableListView,我希望每个 child 显示不同的背景,具体取决于组和 child 位置。到目前为止,我是在 @Override getChildView
中从适配器 activity 进行操作这是我的代码示例
@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) 组 parent 时,children 的颜色与第一个 (#0) ) 组。
这个开关框架运行良好,当然,“@color”中的所有颜色都彼此不同。 有什么提示吗?
您在创建视图时设置了背景颜色。由于 listviews 回收视图,因此当视图被重新使用时颜色不会改变。