删除viewHolder.itemView.findViewById(R.id.rmvPerson).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
firebaseRecyclerAdapter.getRef(position).removeValue();
firebaseRecyclerAdapter.notifyItemRemoved(position);
dataBase.child(getRef(position).getKey().toString().trim()).child("usuario").removeValue();
}
});
中的所有项目时出错。当我删除一个特定项目时没问题,当我删除最后一个时出现错误(我的意思是,当我删除所有内容时)。所以这是我的代码
E/AndroidRuntime: FATAL EXCEPTION: main
Process: uyenterteinment.haynoche, PID: 7251
java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at com.firebase.ui.database.FirebaseArray.getItem(FirebaseArray.java:50)
at com.firebase.ui.database.FirebaseRecyclerAdapter.getRef(FirebaseRecyclerAdapter.java:155)
at uyenterteinment.haynoche.EventSingleActivity$3$3.onClick(EventSingleActivity.java:239)
at android.view.View.performClick(View.java:5698)
at android.view.View$PerformClick.run(View.java:22557)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7231)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
所以错误是:
at uyenterteinment.haynoche.EventSingleActivity$3$3.onClick(EventSingleActivity.java:239)
在这里你可以看到,它是sais
firebaseRecyclerAdapter.getRef(position).removeValue();
这一行是:
ps -ef
答案 0 :(得分:0)
点击firebaseRecyclerAdapter
上的notifyDataSetChanged()
viewHolder.itemView.findViewById(R.id.rmvPerson).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
var index = position - 1;
firebaseRecyclerAdapter.getRef(index).removeValue();
firebaseRecyclerAdapter.notifyItemRemoved(position);
dataBase.child(getRef(position).getKey().toString().trim()).child("usuario").removeValue();
firebaseRecyclerAdapter.notifyDataSetChanged();
}
});
为了防止异常,只需从position
中减去1,因为索引从零开始,这意味着第一个项目的索引为0。
答案 1 :(得分:0)
从recyclerview
移除项目后更新您的视图,删除项目后添加“notifyDataSetChanged()
”。
答案 2 :(得分:0)
我认为这对你有用
viewHolder.getAdapterPosition()
点击项目
viewHolder.itemView.findViewById(R.id.rmvPerson).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
firebaseRecyclerAdapter.getRef(viewHolder.getAdapterPosition()).removeValue();
dataBase.child(getRef(viewHolder.getAdapterPosition()).getKey().toString().trim()).child("usuario").removeValue();
firebaseRecyclerAdapter.notifyItemRemoved(viewHolder.getAdapterPosition();
}
});
答案 3 :(得分:0)
从recyclerview中删除值后,立即从适配器调用 notifyDataSetChanged()以使用编辑后的数据刷新recyclelerview。因此,ArrayList的大小也将更新。
viewHolder.itemView.findViewById(R.id.rmvPerson).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*remove value*/
notifyDataSetChanged();
}
});