setOnClickListener RecyclerView Adapter中的notifyDataSetChanged

时间:2018-07-23 01:50:33

标签: android android-recyclerview android-arrayadapter recyclerview-layout

在适配器中的setOnClickListener之后如何更新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();
                    }
                }
            });

logcat:

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适配器中获取适配器?

3 个答案:

答案 0 :(得分:1)

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

然后,检查此代码

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

答案 1 :(得分:0)

从Google开发者网站检查此文档

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

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

答案 2 :(得分:0)

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

您可以使列表适配器类成为适配器对象,并在活动开始时将数据传递给它,然后onclicklistener只需添加此

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