有两个碎片: -Fragment A - 有一个按钮 -Fragment B - 有一个exapndablelistview 两者同时可见。
按下按钮后,expandablelistview的一个子元素的颜色应该更改。我会知道它将成为哪个父母和孩子。但是如何从Fragment B类而不是BaseExpandableListAdapter访问子元素。
答案 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();
}