android - 更新个人资料图片时更改图片网址
问题描述
我正在使用 firebase 构建一个 android 应用程序。该应用程序有用户,这些用户有个人资料图像。用户可以对帖子点赞、创建和评论。我目前有一个数据结构,其中用户 ID、名称和下载图像 URL 都保存在用户创建的帖子、点赞对象和评论对象中。我这样做是因为我不想在每次有评论或帖子时查询用户对象只是为了显示名称和个人资料图像。这意味着如果有 30 个帖子并且每个帖子由不同的人发布,我将不得不查询所有 30 个用户以获得名称和图像 url。我现在遇到的问题是每次用户更新该图像时,我都必须查看并找到他们所做的所有评论、帖子和喜欢,并使用新的下载网址更新这些内容。
这是我的帖子对象
public class Post implements Parcelable {
private String postId;
private String title;
private String body;
private CreatedBy createdBy;
private String parentId;
@ServerTimestamp
private Date createdAt;
private Date updatedAt;
public Post(){
}
}
和对象创建的
Public class CreatedBy implements Parcelable {
private String id;
private String name;
private String imageUrl;
private CreatorType creatorType;
}
解决方案
实际上非常简单,您只需Task
使用用户的路径侦听并更新实时数据库。
onActivityResult()
获取一些数据后,您可能会插入图像。
// uploadTask is StorageReference's task
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content
taskSnapshot.getDownloadUrl();
// Update the users node in Realtime Database with the URL
// If you're using image loading library like Glide it should update
// automatically
}
});
推荐阅读
- python - Visual Studio Code Python 终端不喜欢 input()
- git - Git LFS 迁移和配置文件
- c++ - Cmake 错误:在 Windows 10 上配置或构建 openpose 时未找到变量
- excel - 下载公开的 Google 电子表格
- excel - 同一操作的 VBA 多个 Target.Address (OR)
- android - DownloadManager 在 Android 11 模拟器上抛出 IllegalStateException 或 SecurityException
- java - 如何在spring boot中将参数值传递给查询?
- php - Laravel 路线中未识别路线
- matplotlib - Matplotlib:具有相同布局的多个图(无自动布局)
- android - 未解决的参考 MergeAdapter