从Adapter外部修改ExpandableListView中的子元素(颜色)

时间:2014-12-18 22:34:09

标签: android android-fragments expandablelistview

有两个碎片: -Fragment A - 有一个按钮 -Fragment B - 有一个exapndablelistview 两者同时可见。

按下按钮后,expandablelistview的一个子元素的颜色应该更改。我会知道它将成为哪个父母和孩子。但是如何从Fragment B类而不是BaseExpandableListAdapter访问子元素。

2 个答案:

答案 0 :(得分:2)

在子元素的类中创建一个成员变量,以跟踪它的颜色。然后,您需要ListAdapter根据此新成员变量更改子元素的颜色。现在按下按钮时,只需更改此颜色变量并在ListAdapter上调用notifyDataSetChanged()。

示例:

class ChildElement {
    int color;
}

@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
    ChildElement e = getItem(position);
    ViewHolder holder;
    ...
    holder.view.setBackgroundColor(e.color);
    ...
}

然后改变颜色

elements.get(position).color = newColor;
adapter.notifyDataSetChanged();

答案 1 :(得分:0)

以下是我这样做的方式:我有两个变量,即默认颜色和新颜色。这里的getChildView是我使用的代码

    if (child.getId() == currentlyActiveChild) {
        txtListChild.setTextColor(Color.RED);
    } else {
        txtListChild.setTextColor(defaultChildColor);
    }

显然在适配器里面我有

public void setActiveChild(long newID) {
    currentlyActiveChild = newID;
    notifyDataSetChanged();

}