在 Firestore 中显示用户的照片

我正在编写一个显示餐厅和用户评论的应用程序。

我想显示评论,我有usernamecommentdateuser_photo

https://img2.mukewang.com/64c36ce70001b02b12470602.jpg

https://img4.mukewang.com/64c36cf000016fc203910213.jpg

第一个问题是我应该在审核文档中保存用户名还是 userId 吗?


第二个问题是如何显示用户的照片?我无法将其作为 URL 存储在文档中。


因为如果用户更改照片,审阅文档中的照片不会发生更改。请注意,用户的照片存储在 Firestore Storage 中。


解决这个问题的最佳实践是什么?


AdapterReview.java


public class AdapterReview extends FirestoreRecyclerAdapter<ReviewModel, HolderReviews>{


public AdapterReview(@NonNull FirestoreRecyclerOptions<ReviewModel> options) {

    super(options);

}

@Override

protected void onBindViewHolder(@NonNull HolderReviews holder, int i, @NonNull ReviewModel reviewObject) {

    holder.usernameTextView.setText(reviewObject.getUsername());

    holder.dateTextView.setText(reviewObject.getDate());

    holder.commentTextView.setText(reviewObject.getComment());

    holder.photoImageView.setImageURI(???);

}


@NonNull

@Override

public HolderReviews onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_adapter, parent, false);

    return new HolderReviews(view);

}

}

此方法在 MainActivity.java 中创建 firestore recyclerview


  private void fireStoreRecyclerViews( ) {

    Query query = db.collection("reviews");


    FirestoreRecyclerOptions<ReviewModel> options = new FirestoreRecyclerOptions.Builder<ReviewModel>()

            .setQuery(query, ReviewModel.class)

            .build();


    adapterReview = new AdapterReview(options);

    RecyclerView recyclerView = view.findViewById(R.id.recyclerView);

    recyclerView.setHasFixedSize(true);

    recyclerView.setLayoutManager(new LinearLayoutManager(this);

    recyclerView.setAdapter(adapterReview);


}


胡说叔叔
浏览 106回答 1
1回答

aluckdog

第一个问题是我应该在审核文档中保存用户名还是 userId 吗?肯定是uid,因为它是独一无二的。对于用户名,它最终可能会发生冲突并尝试使用相同的用户名写入两个文档。第二个问题是如何显示用户的照片?我无法将其作为 URL 存储在文档中。在大多数情况下,我们使用的库可以帮助我们将图像设置为视图。为此我推荐你Glide。正如我在您的数据库中看到的那样,您已经将“照片”网址存储在文档中,这是正确的方法。添加Glide依赖项后,请更改以下代码行:holder.photoImageView.setImageURI(???);到Glide.with(context).load(reviewObject.getPhoto()).into(holder.photoImageView);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java