0

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

1 回答 1

1

您可以使用notifyDataSetChanged()

于 2013-06-17T18:22:15.960 回答