gpt4 book ai didi

android - 有没有办法从 FirestoreRecyclerAdapter 获取项目的文档 ID?

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:47 25 4
gpt4 key购买 nike

我可以查询 Firestore 并手动获取 ID,但我使用的是 FirestoreRecyclerAdapter,因为它附带了大量开箱即用的额外工作。所以,如果我有这样的代码:

FirebaseFirestore db = FirebaseFirestore.getInstance();

Query query = db.collection(COLLECTION_NAME)
.whereEqualTo("userId", USER_ID)
.limit(LIMIT);

FirestoreRecyclerOptions options = new FirestoreRecyclerOptions
.Builder<SomeEntity>()
.setQuery(query, SomeEntity.class)
.build();

FirestoreRecyclerAdapter adapter = new FirestoreRecyclerAdapter<SomeEntity, MyHolder>(options) {
@Override
public void onBindViewHolder(MyHolder holder, int position, SomeEntity model) {
// I need model ID here
}
}

因此,如果我使用 FirestoreRecyclerAdapter,它会自动将我的 SomeEntity 类反序列化为 model 对象。这一切都很好,但现在我需要将监听器附加到列表中,并对模型 ID 使用react。现在,如果我手动反序列化 Firestore 中的对象,我会做这样的事情:

for (DocumentSnapshot document : task.getResult()) {
SomeEntity entity = document.toObject(SomeEntity.class).setId(document.getId());
list.add(entity);
}

但是,由于 FirestoreRecyclerAdapter 正在为我进行反序列化,所以我无法自己调用 document.getId()。当我使用 onBindViewHolder 方法时,我无法再访问文档 ID。是否缺少某种方法,某种从我忽略的适配器中检索 ID 的方法?

请注意,我不认为将 ID 冗余存储为字段是一种解决方案。我宁愿继承并重写 FirestoreRecyclerAdapter,但我更愿意在不做太多工作的情况下解决这个问题。

最佳答案

当您需要文档 ID 时,您应该已经对所处理的项目有所了解。通常这将是项目在列表中的位置。 IE。当用户单击一个项目时,单击处理程序将传递该项目的 ID。如果您有 position,您可以通过以下方式从适配器获取 DataSnapshot:

adapter.getSnapshots().getSnapshot(position);

因此,如果您想获取 ID,您可以通过以下方式获取它:

String id = adapter.getSnapshots().getSnapshot(position).getId();

关于android - 有没有办法从 FirestoreRecyclerAdapter 获取项目的文档 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49708212/

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