在Firestore中显示用户的照片

时间:2019-09-14 08:32:04

标签: java android firebase google-cloud-firestore

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

我要显示评论,我有getAs...usernamecommentdate

enter image description here enter image description here

enter image description here

第一个问题是我应该在用户名或用户名中保存评论文件吗?

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

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

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

AdapterReview.java

user_photo

这种在MainActivity.java中创建firestore recyclerview的方法

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);
}
}

1 个答案:

答案 0 :(得分:1)

  

第一个问题是我应该在用户名或用户名中保存评论文件吗?

绝对是uid,因为它是唯一的。如果使用用户名,最终可能会发生冲突,并试图用相同的用户名编写两个文档。

  

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

在大多数情况下,我们使用的库可以帮助我们将图像设置为视图。为此,我建议您Glide。正如我在您的数据库中看到的那样,您已经在文档中存储了“照片” URL,这是一种正确的方法。

添加了Glide依赖项后,请更改以下代码行:

holder.photoImageView.setImageURI(???);

Glide.with(context).load(reviewObject.getPhoto()).into(holder.photoImageView);