我在 ExpandableListView 的 getChildView 中有一个 clickListener。当用户单击其中一个孩子时,该行将从列表中删除。我需要刷新列表视图以反映此删除。由于我在数据适配器内部,我认为我不能像在设置适配器的 Activity 内部那样调用 notifyDataSetChanged() 。
我知道我可以启动一个新的 Activity,但这会在 Activity 堆栈中添加一个几乎完全相同的副本(可能还有很多)。我正在寻找一种无需调用 startActivity 即可刷新此列表的方法。如果我手动折叠并展开组,列表会刷新,所以我尝试以编程方式执行此操作,但这也不起作用。(请注意,我刷新的组始终位于位置 1)。
有谁知道如何在不开始新活动的情况下刷新此列表视图?谢谢!
public class ExpandListAdapter extends BaseExpandableListAdapter {
public ExpandListAdapter(Context context, ArrayList<ExpandListGroup> groups, ExpandableListView expandableList) {
this.context = context;
this.groups = groups;
this.expandableList = expandableList;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view, final ViewGroup parent) {
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//call method to remove this item from the database
//remove item from ArrayList
//refresh the view -- this is where I am stuck
//tried expandableList.collapseGroup(1); but null pointer resulted
}
}
}
}