【问题标题】:How to populate Firebase storage images with recyclerview in android databinding如何在 android 数据绑定中使用 recyclerview 填充 Firebase 存储图像
【发布时间】:2016-09-28 03:26:22
【问题描述】:
我有一个 recyclerview,它通过数据绑定填充数据。以前我在 Picasso 自定义绑定适配器的帮助下填充图像,但现在我正在升级到 firebase 存储,但没有得到代码来使用 recyclerview 填充它。请帮忙。
【问题讨论】:
标签:
android
firebase
android-recyclerview
android-databinding
firebase-storage
【解决方案1】:
这是一个示例,我们存储指向 Storage 的 URL,然后使用 Glide 将其下载到回收器视图中。
// Chat message text can contain a download URL or text
public class ChatMessage {
public String name;
public String message;
public ChatMessage() {
}
public ChatMessage(String name, String message) {
this.name = name;
this.message = message;
}
}
// Use a custom ViewHolder populated from the chat message
public class ChatMessageViewHolder extends RecyclerView.ViewHolder {
private static final String TAG = "ChatMessageViewHolder";
private final Activity activity;
TextView name, message;
ImageView image;
public ChatMessageViewHolder(Activity activity, View itemView) {
super(itemView);
this.activity = activity;
name = (TextView) itemView.findViewById(android.R.id.text1);
message = (TextView) itemView.findViewById(android.R.id.text2);
image = new ImageView(activity);
((ViewGroup)itemView).addView(image);
}
public void bind(ChatMessage chat) {
name.setText(chat.name);
if (chat.message.startsWith("https://firebasestorage.googleapis.com/") || chat.message.startsWith("content://")) {
message.setVisibility(View.INVISIBLE);
image.setVisibility(View.VISIBLE);
// Use Glide (you could use Picaso) to load the image
Glide.with(activity)
.load(chat.message)
.into(image);
}
else {
message.setVisibility(View.VISIBLE);
image.setVisibility(View.GONE);
message.setText(chat.message);
}
}
}
This gist 和 this video 详细说明如何在完整的应用程序中执行此操作