我正在编写一个显示餐厅和用户评论的应用程序。
我要显示评论,我有getAs...
,username
,comment
和date
。
第一个问题是我应该在用户名或用户名中保存评论文件吗?
第二个问题是如何显示用户的照片?我无法将其作为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);
}
}
答案 0 :(得分:1)
第一个问题是我应该在用户名或用户名中保存评论文件吗?
绝对是uid
,因为它是唯一的。如果使用用户名,最终可能会发生冲突,并试图用相同的用户名编写两个文档。
第二个问题是如何显示用户的照片?我无法将其作为URL存储在文档中。
在大多数情况下,我们使用的库可以帮助我们将图像设置为视图。为此,我建议您Glide。正如我在您的数据库中看到的那样,您已经在文档中存储了“照片” URL,这是一种正确的方法。
添加了Glide
依赖项后,请更改以下代码行:
holder.photoImageView.setImageURI(???);
到
Glide.with(context).load(reviewObject.getPhoto()).into(holder.photoImageView);