0
votes

Problème avec l'adaptateur et recyclerview

Je fais une application pour télécharger des photos et les montrer dans une galerie.

Quand j'exécute mon application, il ne charge pas les photos de la base de données Firebase. Il me donne l'erreur: p>

Aucun adaptateur attaché; Sauter la mise en page code> p>

J'ai essayé de nombreuses solutions mais que tous ont échoué. p>

C'est l'activité: p>

package com.example.android.shoftoh1;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.android.shoftoh1.R;
import com.example.android.shoftoh1.Upload;
import com.squareup.picasso.Picasso;

import java.util.List;


// Create the basic adapter extending from RecyclerView.Adapter
// Note that we specify the custom ViewHolder which gives us access to our views
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {

    private Context mContext;
    private List<Upload> mUploads;

    public ImageAdapter(Context context, List<Upload> uploads) {
        mContext = context;
        mUploads = uploads;
    }
    @NonNull
    @Override
        public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(mContext).inflate(R.layout.image_item, parent, false);
            return new ImageViewHolder(v);
    }

    @Override
        public void onBindViewHolder(ImageViewHolder holder, int position) {
            Upload uploadCurrent = mUploads.get(position);
            holder.textViewName.setText(uploadCurrent.getName());

            Picasso.get()
                    .load(uploadCurrent.getImageUrl())
                    .fit()
                    .centerCrop()
                    .into(holder.imageView);


        }

    @Override
    public int getItemCount() {
        return mUploads.size();
    }

    // Provide a direct reference to each of the views within a data item
    // Used to cache the views within the item layout for fast access
    static class ImageViewHolder  extends RecyclerView.ViewHolder  {
        // Your holder should contain a member variable
        // for any view that will be set as you render a row
        TextView textViewName;
        ImageView imageView;

        // We also create a constructor that accepts the entire item row
        // and does the view lookups to find each subview
        ImageViewHolder(View itemView) {
            // Stores the itemView in a public final member variable that can be used
            // to access the context from any ViewHolder instance.
            super(itemView);

            textViewName = itemView.findViewById(R.id.text_view_name);
            imageView = itemView.findViewById(R.id.image_view_upload);
        }


        }
}


3 commentaires

Si vous placez un point d'arrêt sur la première ligne de code dans votre méthode ONDATACHANGE et exécutez-la dans le débogueur, a-t-il déjà atteint ce point d'arrêt?


Oui ça va ça


Merci de confirmer. Cela signifie que vous pouvez parcourir le code de l'endroit où. Votre muploads est-il peuplé avec les bonnes données si vous le faites?


3 Réponses :


0
votes

Essayez de faire ce produit ImageViewolder publique

    // Provide a direct reference to each of the views within a data item
    // Used to cache the views within the item layout for fast access
    public class ImageViewHolder  extends RecyclerView.ViewHolder  {
        // Your holder should contain a member variable
        // for any view that will be set as you render a row
        public TextView textViewName;
       public ImageView imageView;

        // We also create a constructor that accepts the entire item row
        // and does the view lookups to find each subview
       public ImageViewHolder(View itemView) {
            // Stores the itemView in a public final member variable that can be used
            // to access the context from any ViewHolder instance.
            super(itemView);

            textViewName = itemView.findViewById(R.id.text_view_name);
            imageView = itemView.findViewById(R.id.image_view_upload);
        }


        }
}


0 commentaires

0
votes

Je suggère que vous essayez de:

  1. Déplacez l'adaptateur de la fonction Firebase aux rangées qui Définissez la vue recycleur
  2. Mettez ensuite à jour la liste contenant le à partir de Firebase (Ceci peut être la même liste)
  3. Enfin, mettez à jour l'adaptateur qui a été fait.

    bonne chance, Bravo!


0 commentaires

0
votes

Tout d'abord, essayez de joindre l'adaptateur avec une liste vide puis appelez notifydatasetchanged () sur la mise à jour de la liste comme: xxx


0 commentaires