其他分享
首页 > 其他分享> > android – 从我的适配器中刷新ExpandableListView

android – 从我的适配器中刷新ExpandableListView

作者:互联网

我发现只有一个类似的问题而且对我没有帮助.我希望你能帮助我,因为我被困住了.

这是我的自定义适配器(仅限相关部分):

MyExpandableListAdapter:

public class MyExpandableListAdapter extends BaseExpandableListAdapter {

    //...

    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View view, ViewGroup parent) {     
        ChildInfo childInfo = (ChildInfo) getChild(groupPosition, childPosition);
        if (view == null) {
            LayoutInflater infalInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = infalInflater.inflate(R.layout.prisustva_detaljno_child_row,
                    null);
        }

        Button delete = (Button) view.findViewById(R.id.delete);
        delete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                RelativeLayout Rl = (RelativeLayout) v.getParent();
                TextView id = (TextView) Rl.findViewById(R.id.id_prisustvo);
                PrisustvaAdapter deleteByID = new PrisustvaAdapter(context);

                deleteByID.openToWrite();
                deleteByID.openToRead();
                deleteByID.deleteID(id .getText().toString());
                deleteByID.close();

                Toast.makeText(context, "Successfully deleted!",
                        Toast.LENGTH_LONG).show();
            }
        });

        // ...
        return view;
    }

// ...
}

就像你可以看到我在ExpandableListView的每个子行中都有一个按钮.当我点击该按钮时,它会在我的数据库中触发删除过程,因为您还可以看到我必须从我的适配器中进行删除,因为只有在那里我可以为子行内的按钮创建click事件.我想知道当我从数据库中删除数据时如何刷新我的ExpandableListView?我是否必须从适配器内部进行操作?如果没有,有什么替代方案?

P.S:如果你们需要更多代码,请告诉我.

解决方法:

我不能确定没有看到你的其余代码(如何实例化你的BaseExpandableAdapter),但是在onClick()方法结束时调用notifyDatasetChanged()应该可以解决问题.

标签:notifydatasetchanged,android,expandablelistview
来源: https://codeday.me/bug/20190725/1535266.html