gpt4 book ai didi

java - 从 Firestore 检索嵌套对象并将其放入 Android 中的 RecyclerView 中?

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:05 24 4
gpt4 key购买 nike

我正在尝试在单个文档中使用附加的图像数据结构填充 Android 中的 RecylerView。我想列出每个ID的每个名称、地区、图像。

它需要在子集合中不崩溃的情况下完成。是否有任何可能的智能方法来填充 RecylerView.谢谢

这是我正在使用的示例数据。[![在此处输入图像描述][1]][1]

编辑1:我尝试实现以下内容,它有效吗?

private void setUpRecyclerView(View view) {

CheckinList = new ArrayList<>();
notebookRef.get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>(){

@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
user user = documentSnapshot.toObject(user.class);

HashMap<String, HashMap> about = user.getAbout();
for(Map.Entry<String, HashMap> entry : about.entrySet()) {
String key = entry.getKey();
HashMap<String, HashMap> value = entry.getValue();
String Name = "";
String District = "";
String imageUrl = "";
for (Map.Entry<String, HashMap> entry3 : value.entrySet()) {
String key3 = entry3.getKey();
if (key3 == "name"){
Name = entry3.getValue().toString();
} else if (key3 == "district"){
District = entry3.getValue().toString();
} else if (key3 == "imageurl") {
imageUrl = entry3.getValue().toString();
}
}
CheckinList.add(new Checkin(Name, District, imageUrl));

}

}

}

});

adapter = new NoteAdapter(CheckinList, mContext);

RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
recyclerView.setAdapter(adapter);
}```

full data scheme screenshot
[![enter image description here][2]][2]


[1]: /image/2Jspj.jpg
[2]: /image/iwsat.jpg

最佳答案

如果ID数量不多,则需要使用嵌套for循环

如果您有权访问数据库,您应该将架构更改为类似这样的

Document(randomID) -> Collection (about) -> Document (IDs) = Data (name/district/image);

此后,您只需进行嵌套 Firebase 查询即可访问数据。

如果您需要使用我给定架构进行 Firebase 查询的帮助,或者如果您想使用您自己的架构并获取数据,请提供更多信息。

编辑 1

不建议,因为这不是获取数据的最佳方式

FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();

firebaseFirestore
.collection("your collection")
.document("your doc).get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()){
int docSize = 10; //size of IDs (assuming 10)
for (int index = 0; index <= docSize; index++){
HashMap<String, Object> dataMap = (HashMap<String, Object>) task.getResult().get("1000000"+index);
//you have data in dataMap
}
}
}
});

抱歉,由于我没有完整的信息,所以不确定结果,您需要修改代码。如果您成功,请编辑我的答案。

仍然建议更改架构

希望这会有所帮助!

关于java - 从 Firestore 检索嵌套对象并将其放入 Android 中的 RecyclerView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59656893/

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