要解决Android FireStore RecyclerView中的onSwiped方法不更新RecyclerView的问题,可以尝试以下解决方法:
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
YourDataModel data = dataList.get(position);
// 从Firestore数据库中删除数据
FirebaseFirestore.getInstance().collection("your_collection").document(data.getId()).delete()
.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(Void aVoid) {
// 删除成功后更新RecyclerView的数据源
dataList.remove(position);
adapter.notifyItemRemoved(position);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// 处理删除失败的情况
}
});
}
}).attachToRecyclerView(recyclerView);
FirebaseFirestore.getInstance().collection("your_collection").addSnapshotListener(new EventListener() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
if (error != null) {
// 处理错误情况
return;
}
// 更新RecyclerView的数据源
dataList.clear();
for (DocumentSnapshot document : value) {
YourDataModel data = document.toObject(YourDataModel.class);
data.setId(document.getId());
dataList.add(data);
}
adapter.notifyDataSetChanged();
}
});
通过使用上述解决方法,你应该能够在删除数据后正确更新RecyclerView。确保在代码中替换"your_collection"和"YourDataModel"为你真实的集合名称和数据模型类。