使用毕加索从 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 通知

如何向 ios 应用程序发送 Firebase 推送通知

Swift 从用户向用户发送推送通知 Firebase

如何使用firebase在android studio中从一个用户向另一个用户发送通知[重复]

从应用发送 Firebase 通知请求