使用毕加索从 Firebase 向 CardView 显示用户图像不起作用
Posted
技术标签:
【中文标题】使用毕加索从 Firebase 向 CardView 显示用户图像不起作用【英文标题】:Displaying User Images to CardView from Firebase using Picasso Not Working 【发布时间】:2021-10-31 08:44:05 【问题描述】:我正在尝试将图像从我的 Firebase 存储和实时数据库显示到我的 android 应用程序中的 CardView。我已将图像保存到 Firebase 存储并作为特定用户(狗)下的 Url 节点。 CardView 显示在每个所有者名下注册的狗,每只狗基本上都有自己的个人资料图片.. 我想在 UI 上显示。
我正在使用 Picasso,因为它在我找到的教程中使用,并且似乎正在工作,但是它试图在我的 DogUserAdapter 中找到“上下文”,它返回 null。我以前没有使用上下文上下文,因为我在这个特定的 CardView 上使用了回调函数。我还能在这里使用什么来显示数据库中的图像?
DogUserAdapter
public class DogUserAdapter extends FirebaseRecyclerAdapter<Dog, DogUserAdapter.DogViewHolder>
private DogCallback dogCallback;
private Context context;
public DogUserAdapter(@NonNull FirebaseRecyclerOptions<Dog> options, @NonNull final DogCallback dogCallback)
super(options);
this.dogCallback = dogCallback;
this.context = context;
@Override
protected void onBindViewHolder(@NonNull DogViewHolder holder, int position, @NonNull Dog model)
holder.dogName.setText(model.getName());
Picasso.with(context)
.load(model.getImageUrl())
.into(holder.dogImage);
holder.cardView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
dogCallback.onCardViewClick(model);
);
@NonNull
@Override
public DogViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.dog, parent, false);
return new DogUserAdapter.DogViewHolder(view);
public class DogViewHolder extends RecyclerView.ViewHolder
TextView dogName;
ImageView dogImage;
CardView cardView;
public DogViewHolder(@NonNull View itemView)
super(itemView);
dogName = itemView.findViewById(R.id.dogName);
dogImage = itemView.findViewById(R.id.dogImage);
cardView = itemView.findViewById(R.id.card_view_dog);
public interface DogCallback
void onCardViewClick(final Dog dog);
卡片视图
Firebase 层次结构
【问题讨论】:
据我所知,使用毕加索不需要上下文。 Picasso.get().load(model.getImageUrl()).into(holder.dogImage); 在哪一行代码中,上下文为空? 我尝试了get()
,但没有成功。 get()
是红色的,添加任何形式的上下文都会返回 null。我可以在常规活动中正常使用它,但不幸的是在我的adapter
中不能使用它。我现在选择只使用静态图像,但可能会在周末再试一次
【参考方案1】:
帕特里克是对的。毕加索不需要上下文
Picasso.get().load(url).into(imageView);
【讨论】:
以上是关于使用毕加索从 Firebase 向 CardView 显示用户图像不起作用的主要内容,如果未能解决你的问题,请参考以下文章
从 Firebase(或其他平台)向特定终端发送 IOS 通知