[英]Recycler View Item Deletion index out of bound
我正在嘗試從存儲在數組中的回收站視圖中刪除該項目。
final int position 給了我這個建議(不要將位置視為固定;僅立即使用並調用 holder.getAdapterPosition() 稍后查找)。
我在下面寫的方法是在oncreate中,我們要刪除的項目由持有者持有,它調用deletetask()方法。
實際的錯誤是項目被刪除,沒有任何異常,然后當我嘗試刪除更多項目時,有時我會收到以下錯誤“java.lang.IndexOutOfBoundsException: Invalid index 0, size 0”
然后它把我推回到以前的活動,在再次進入回收站查看活動后,這些項目被無一例外地刪除。
為什么我會收到此錯誤“java.lang.IndexOutOfBoundsException: Invalid index 0, size 0”
FirebaseRecyclerOptions<model_tasks> options = new FirebaseRecyclerOptions.Builder<model_tasks>()
.setQuery(reference, model_tasks.class)
.build();
FirebaseRecyclerAdapter<model_tasks, Viewholder> adapter = new FirebaseRecyclerAdapter<model_tasks, Viewholder>(options) {
@Override
protected void onBindViewHolder(@NonNull Viewholder holder,final int position , @NonNull final model_tasks model) {
holder.setTime(model.getTime());
holder.setTask(model.getTask());
holder.setDesc(model.getDesc());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
key= getRef(position).getKey();
// task_ = model.getTask();
// description = model.getDesc();
//idd=model.getTime();
updateTask();
}
});
}
@NonNull
@Override
public Viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.task_recieved, parent, false);
return new Viewholder(view);
}
};
recyclerView.setAdapter(adapter);
adapter.startListening();
}
刪除任務(方法)
@Override
public void onClick(View v) {
reference.child(key).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
// Toast.makeText(tasks.this, "Task Is deleted", Toast.LENGTH_SHORT).show();
// cancelAlarm();
}else
{
String err = task.getException().toString();
Toast.makeText(tasks.this, "Failed to delete task "+ err, Toast.LENGTH_SHORT).show();
}
}
});
dialog.dismiss();
}
});
上述問題的答案不是使用鍵中的位置,而是使用下面的行,它消除了應用程序的崩潰。
key= getRef(holder.getAdapterPosition()).getKey();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.