I have an error, I hope you can help me: E / RecyclerView: No adapter attached; skipping layout

1

This is the code of my Adapter :

public class ProductosAdapter extends RecyclerView.Adapter<ProductosAdapter.ViewHolder> {

    private List<Productos> productos;
    private int layout;
    private OnClickListener listener;
    private OnLongClickListener listenerLong;
    private Context context;

    public ProductosAdapter(List<Productos> productos, int layout, OnClickListener listener, OnLongClickListener listenerLong){
        this.productos = productos;
        this.layout = layout;
        this.listener = listener;
        this.listenerLong = listenerLong;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(parent.getContext()).inflate(layout, parent, false);
        ViewHolder vh = new ViewHolder(v);
        context = parent.getContext();
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.bind(productos.get(position), listener, listenerLong);
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder{

        private TextView titulo;
        private TextView descripcion;
        private TextView precio;
        private ImageView imagen;

        public ViewHolder(View v){
            super(v);

            titulo = (TextView)itemView.findViewById(R.id.textViewTitulo);
            descripcion = (TextView)itemView.findViewById(R.id.textViewDescripcion);
            precio = (TextView)itemView.findViewById(R.id.textViewPrecio);
            imagen = (ImageView)itemView.findViewById(R.id.imagenViewProducto);
        }

        public void bind(final Productos productos, final OnClickListener listener, final OnLongClickListener listenerLong){

            titulo.setText(productos.getTitulo());
            descripcion.setText(productos.getDescripcion());

            String precioConversion = String.valueOf(productos.getPrecio());
            precio.setText(precioConversion);

            Picasso.get().load(Api.GALERIA + productos.getImagen()).fit().into(imagen);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onItemClick(productos, getAdapterPosition());
                }
            });

            itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {

                    listenerLong.onItemClick(productos, getAdapterPosition());

                    return true;
                }
            });
        }
    }

    public interface OnClickListener{
        void onItemClick(Productos productos, int position);
    }

    public interface OnLongClickListener{
        void onItemClick(Productos productos, int position);
    }
}

This is the error that is displayed in LogCat :

    
asked by jgaray 11.11.2018 в 23:47
source

1 answer

0

The problem is that onCreateViewHolder() must return the view you inflate and not a ViewHolder,

View v = LayoutInflater.from(parent.getContext()).inflate(layout, parent, false);

makes the following change:

   @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(parent.getContext()).inflate(layout, parent, false);
        //ViewHolder vh = new ViewHolder(v);
        context = parent.getContext();
        return v;
    }
    
answered by 12.11.2018 в 01:57