如何在Firestore中获取已登录用户对应集合的文档数据?
需求与问题
我希望在用户登录后,访问images集合并获取与当前登录用户ID关联的所有文档的图片URL及其他字段。下图是数据库结构:

导致应用崩溃的代码
fStore.collection("images").document(FirebaseAuth.getInstance().getCurrentUser().getUid()).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() { @Override public void onComplete(@NonNull Task<DocumentSnapshot> task) { if(task.isSuccessful()){ for(int i = 0; i < Objects.requireNonNull(task.getResult()).getData().size(); i++){ itemList.add(new Item(task.getResult().getData().get("image"+i).toString(), task.getResult().getData().get("name"+i).toString(), task.getResult().getData().get("price"+i).toString(), task.getResult().getData().get("description"+i).toString())); } shoeAdapter = new ShoeAdapter(MainActivity.this, itemList); recyclerView.setAdapter(shoeAdapter); shoeAdapter.notifyDataSetChanged(); } } });
尝试的改进代码(切换账号后数据未更新)
最初的方案未针对当前登录用户做处理,切换账号后RecyclerView仍显示相同内容,于是我尝试了这段代码:
for (int i = 0; i < Objects.requireNonNull(task.getResult()).size(); i++) { Item item = new Item(); item.setItemName(task.getResult().getDocuments().get(i).getString("name")); item.setItemPrice(task.getResult().getDocuments().get(i).getString("price")); item.setItemDescription(task.getResult().getDocuments().get(i).getString("description")); item.setItemImage(task.getResult().getDocuments().get(i).getString("image")); itemList.add(item); } shoeAdapter = new ShoeAdapter(this, itemList); recyclerView.setAdapter(shoeAdapter); shoeAdapter.notifyDataSetChanged(); });
内容的提问来源于stack exchange,提问作者jayCoder
相关产品推荐
相关产品推荐

