[英]Change Background Color of Clicked Child in Expandable ListView Android outside the onChildClick() method
[英]Change Background Color of Clicked Child in Expandable ListView Android
我想更改在ExpandableListView中单击的子项的背景颜色。 也就是说,当点击任何孩子时,它的背景颜色应该被改变。 我试图以这种方式去它,但它选择了一些其他行,而不是已被点击的那一行。
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
parent.getChildAt(childPosition).setBackgroundColor(Color.DKGRAY);
return false;
}
请告诉我可能缺少的东西。
这就是我解决它的方式。
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;
}
怎么说让你试着直接引用你的视图并设置这样的背景,
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
v.setBackgroundColor(Color.BLUE);
return false;
}
我想你应该用
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.