CardViews, images are not displayed

1

Greetings,

My problem is that the images I have in CardViews are not shown until I scroll, I'm using the Picasso library.

Do you know how I can solve this, so that when I open the application, it shows?

In advance, thank you very much.

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
{
    private List<Unidades> unidad;
    private int layout;
    private OnItemClickListener itemClickListener;
    private Context context;

    public MyAdapter(List<Unidades> unidad, int layout, OnItemClickListener listener)
    {
        this.unidad = unidad;
        this.layout = layout;
        this.itemClickListener = listener;
    }

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

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

        context = parent.getContext();

        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
        holder.bind(unidad.get(position), itemClickListener);
    }

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

    class ViewHolder extends RecyclerView.ViewHolder
    {
        TextView textViewTitulo;
        TextView textViewDes;
        ImageView imageViewUnidad;

        ViewHolder(View itemView) {
            super(itemView);
     
            imageViewUnidad = itemView.findViewById(R.id.imageViewUnidad);
            textViewTitulo = itemView.findViewById(R.id.textViewTitulo);
            textViewDes = itemView.findViewById(R.id.textViewDes);
        }

        void bind(final Unidades unidad, final OnItemClickListener listener)
        {
            Picasso.with(context).load(unidad.getImg()).fit().into(imageViewUnidad);
            textViewTitulo.setText(unidad.getTitulo());
            textViewDes.setText(unidad.getDescrip());

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

    public interface OnItemClickListener
    {
        void onItemClick(Unidades unidades, int position);
    }
}

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        unidad = this.getAllUnidades();

        componentes();
        configuration();
    }

    private void componentes()
    {
        mRecyclerView = findViewById(R.id.recyclerView);
        mLayoutManager = new LinearLayoutManager(this);
        mAdapter = new MyAdapter(unidad, R.layout.recycler_view_item, new MyAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(Unidades unidad, int position) {

            }
        });
    }

    private void configuration()
    {
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());

        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setAdapter(mAdapter);
    }

Sliding up

    
asked by Leningi 23.11.2017 в 14:39
source

2 answers

0

I think it's a Picasso bug, try to put a CallBack on it,

Picasso.with(context).load(unidad.getImg()).fit().into(imageViewUnidad, new Callback() {
        @Override
        public void onSuccess() {
        }

        @Override
        public void onError() {

        }
    });
    
answered by 23.11.2017 в 15:35
-1

Remove the fit() method in the call:

Picasso.with(context).load(unidad.getImg()).into(imageViewUnidad);

Since this method tries to change the size of the image so that it fits exactly within the limits of the container, but fit() can result in delayed execution of the request!

    
answered by 23.11.2017 в 16:38