gpt4 book ai didi

java - FirebaseUI FirestoreRecyclerAdapter - 获取 DocumentReference 将其删除

转载 作者:行者123 更新时间:2023-12-02 11:01:45 26 4
gpt4 key购买 nike

FirestoreFirebase-UI RecyclerView 中删除项目的正确方法是什么?

这是我的方法:

new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
deleteItem(viewHolder.getAdapterPosition());
}
}).attachToRecyclerView(recyclerView);

private void deleteItem(int position) {
DocumentSnapshot ds = (DocumentSnapshot) adapter.getSnapshots().getSnapshot(position);
DocumentReference document = ds.getReference();
document.delete();
}

为什么 getSnapshot 返回 Object 而不是 DocumentSnapshot?转换为 (DocumentSnapshot) 是否正确?

另外,我不必调用 notifyDataSetChangednotifyItemRemoved 因为适配器已经对数据库中的更改使用react,这是否正确?

最佳答案

根据您的评论,如果您想从数据库中删除项目,那么您应该直接在 DocumentReference 对象上使用 delete() 方法。

db.collection("YourCollection").document("DocumentToDelete")
.delete()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully deleted!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error deleting document", e);
}
});

因为您使用的是 Firebase-UI,所以会自动看到此更改,而无需使用此方法调用:

notifyDataSetChanged();

另请注意,删除文档不会删除其子集合(如果您有子集合)。

关于java - FirebaseUI FirestoreRecyclerAdapter - 获取 DocumentReference 将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51281266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com