繁体   English   中英

setOnClickListener RecyclerView 适配器中的 notifyDataSetChanged

[英]notifyDataSetChanged in setOnClickListener RecyclerView Adapter

如何在适配器中的Recylerview之后更新Recylerview

bDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Boolean succes = dbDatasource.delete_ayat_bookmark((qurans.get(position).getnSurat()), qurans.get(position).getnAyat());
                    if (succes) {
                        Message message = new Message();
                        message.pesan_surat_ayat(context, "hapus", (qurans.get(position).getnSurat() + 1), qurans.get(position).getnAyat());
                        adapter.notifyDataSetChanged();
                        dialog.dismiss();
                    }
                }
            });

日志猫:

Process: com.ideabrains.alquranindonesia, PID: 17401
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$Adapter.notifyItemRemoved(int)' on a null object reference
                                at com.ideabrains.alquranindonesia.Bookmark_Adapter$1$4.onClick(Bookmark_Adapter.java:187)
                                at android.view.View.performClick(View.java:5637)

适配器为空,如何在RecyclerView适配器中获取适配器?

在设置 notifyDataSetChanged() 之前,确认适配器已初始化并将适配器设置为RecyclerView

然后,检查此代码

if(adapter!=null){ 
  adapter.notifyDataSetChanged();
}

从谷歌开发者网站查看此文档

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html#getAdapter()

我认为你应该在调用 notifyDataSetChanged() 之前确认适配器不为空

您需要检查您的适配器是否为空,然后执行 notifyDataSetChanged();

您可以创建列表适配器类的适配器对象并在您的活动开始时将数据传递给它,然后 onclicklistener 只需添加这个

if(adapter!=null)
 { 
  adapter.notifyDataSetChanged();
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM