[英]Change Background Color of Clicked Child in Expandable ListView Android
I want to change the background color of the child which is clicked in an ExpandableListView. 我想更改在ExpandableListView中单击的子项的背景颜色。 That is, when any child is clicked, it's background color should get changed. 也就是说,当点击任何孩子时,它的背景颜色应该被改变。 I am trying to go it in this way but it selects some other row, not the one which has been clicked. 我试图以这种方式去它,但它选择了一些其他行,而不是已被点击的那一行。
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
parent.getChildAt(childPosition).setBackgroundColor(Color.DKGRAY);
return false;
}
Please tell me what I might be missing. 请告诉我可能缺少的东西。
This is how I solved it. 这就是我解决它的方式。
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;
}
How about lets say you try to directly refer your view and set the background like this, 怎么说让你试着直接引用你的视图并设置这样的背景,
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
v.setBackgroundColor(Color.BLUE);
return false;
}
I think you should use 我想你应该用
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);
for second one http://developer.android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html#onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long) 第二个http://developer.android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html#onChildClick(android.widget.ExpandableListView,android.view.View,int,int,long)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.