4

ExpandableListView でクリックされた子の背景色を変更したい。つまり、子をクリックすると、背景色が変更されます。このようにしようとしていますが、クリックされた行ではなく、他の行が選択されます。

public boolean onChildClick(ExpandableListView parent, View v,
        int groupPosition, int childPosition, long id) {

    parent.getChildAt(childPosition).setBackgroundColor(Color.DKGRAY);

    return false;
}

何が欠けているのか教えてください。

4

3 に答える 3

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;
}
于 2012-06-16T14:42:21.970 に答える
3

ビューを直接参照して、このように背景を設定しようとすると、

public boolean onChildClick(ExpandableListView parent, View v,
        int groupPosition, int childPosition, long id) {

         v.setBackgroundColor(Color.BLUE);

    return false;
}
于 2012-06-16T12:35:25.850 に答える
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);

2番目のhttp://developer.android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html#onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long)

于 2012-06-16T12:25:06.817 に答える