我想更改在ExpandableListView中单击的子项的背景颜色。 也就是说,当点击任何孩子时,它的背景颜色应该被改变。 我试图以这种方式去它,但它选择了一些其他行,而不是已被点击的行。
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
parent.getChildAt(childPosition).setBackgroundColor(Color.DKGRAY);
return false;
}
请告诉我可能缺少的东西。
答案 0 :(得分:6)
这就是我解决它的方法。
View _lastColored;
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
_groupPosition = groupPosition;
if(_lastColored != null)
{
_lastColored.setBackgroundColor(Color.TRANSPARENT);
_lastColored.invalidate();
}
_lastColored = v;
v.setBackgroundColor(Color.rgb(214, 214, 214));
return false;
}
答案 1 :(得分:2)
怎么说让你试着直接引用你的观点并设置这样的背景,
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
v.setBackgroundColor(Color.BLUE);
return false;
}
答案 2 :(得分:1)
我认为你应该使用
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Object obj = parent.getTag();
if(obj instanceof View){
((View) obj).findViewByID(<id of main ViewGroup of row>).setBackgroundColor(Color.<your normal color>);
}
v.findViewByID(<id of main ViewGroup of row>).setBackgroundColor(Color.DKGRAY);
parent.setTag(v);
return false;
}
parent.getChildAt(childPosition).findViewByID(<id of main ViewGroup of row >).setBackgroundColor(Color.DKGRAY);
or
v.findViewByID(<id of main ViewGroup of row>).setBackgroundColor(Color.DKGRAY);