如何从 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);
中提琴,它会为你工作。
我没有找到这个问题的任何解决方案,只针对实时数据库。我设法从 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);
中提琴,它会为你工作。