如何从 Firestore 和 Storage 加载图像到 RecyclerView?

How to load an image from Firestore and the Storage into a RecyclerView?

我没有找到这个问题的任何解决方案,只针对实时数据库。我设法从 Firestore 中的文档中获取一个字符串并将其显示在 RecyclerView 中,我想用图像实现同样的效果。

在我的 Firestore 文档中,我有一个字段,其中 link 图片(存储在存储中)被保存为字符串。我知道我必须以某种方式使用 Picasso 来加载图像,但我不知道该怎么做。

这是我的代码:

public class Prizes {

    private String text;
    private String image;


    public Prizes (){

    }

    public Prizes(String text, String image) {
        this.text = text;
        this.image = image;
    }
    public String getText() {
        return text;
    }
    public String getImage(){
        return image;
    }
}

这是我的适配器:

public class PrizeGameAdapter extends FirestoreRecyclerAdapter<Prizes, PrizeGameAdapter.PrizeGameHolder> {

    public PrizeGameAdapter(@NonNull FirestoreRecyclerOptions<Prizes> options) {
        super(options);

    }

    @Override
    protected void onBindViewHolder(@NonNull PrizeGameHolder holder, int position, @NonNull Prizes model) {

        holder.textViewPrizeGame.setText(model.getText());
    }

    @NonNull
    @Override
    public PrizeGameHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem_prize_game,parent, false);
        return new PrizeGameHolder(view);
    }

    class PrizeGameHolder extends RecyclerView.ViewHolder {

        TextView textViewPrizeGame;
        ImageView imageViewPrizeGame;

        public PrizeGameHolder(@NonNull View itemView) {
            super(itemView);

            textViewPrizeGame = itemView.findViewById(R.id.listitem_text_view_prize_game);
            imageViewPrizeGame = itemView.findViewById(R.id.picture_prize_recycler_view);
        }
    }
}

使用Picasso将图像从url加载到ImageView中非常简单。

首先,在项目的依赖项build.gradle中添加以下行并同步项目

implementation 'com.squareup.picasso:picasso:2.71828'

同步项目并让 gradle 下载 picasso libaray。完成后,在 PrizeGameAdapter class

onBindViewHolder 中添加以下代码行
Picasso.get()
.load(model.getImage())
.into(holder.imageViewPrizeGame);

中提琴,它会为你工作。