Caitlin
Caitlin

Reputation: 531

Displaying User Images to CardView from Firebase using Picasso Not Working

I am trying to display images from my Firebase storage and realtime database to a CardView in my Android application. I have saved the images to the Firebase Storage and as a Url node under the specific user (dog). The CardView displays the dogs registered under each owner and each dog has its own profile picture essentially.. which I would like to display on the UI.

I am using Picasso as it was used within the tutorial I found, and seemed to be working, however it is trying to find 'context' within my DogUserAdapter, which is returning null. I wasn't previously using Context context as I am utilising a callback function instead on this particular CardView. What else can I use here to display the image from the database?

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);
    }
}

CardView

enter image description here

Firebase Hierarchy

enter image description here

Upvotes: 1

Views: 41

Answers (1)

Exron
Exron

Reputation: 103

Patrick is right. You do not need context for picasso

Picasso.get().load(url).into(imageView);

Upvotes: 1

Related Questions