刷新ListView来自内部的适配器没有startActivity

时间:2013-06-17 18:09:29

标签: android expandablelistview

我在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
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您可以使用notifyDataSetChanged()