我在ExpandableListView的getChildView中有一个clickListener。当用户单击其中一个子项时,该行将从列表中删除。我需要刷新列表视图以反映此删除。由于我在数据适配器内,我不认为我可以调用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
}
}
}
}