web-dev-qa-db-fra.com

Le chargement de l'image avec le glissement est lent

J'ai une application connectée au serveur et lorsque le chargement des images semble si lent et lorsque vous faites défiler l'écran vers le haut et le bas, vous souhaitez de nouveau lire l'image! Ceci est mon adaptateur de glisse: 

DataAdapter :

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
    private Context context;
    private ArrayList<AndroidVersion> Android;


    public DataAdapter(Context context,ArrayList<AndroidVersion> Android) {
        this.context = context;
        this.Android = Android;
    }


    @Override
    public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, int i) {

        viewHolder.tv_name.setText(Android.get(i).getName());
        viewHolder.tv_version.setText(Android.get(i).getVer());
        viewHolder.tv_api_level.setText(Android.get(i).getApi());

        // load image into imageview using glide
        Glide.with(context).load("http://memaraneha.ir/Erfan/images/"+Android.get(i).getPic())
                .placeholder(R.drawable.truiton)
                .error(R.drawable.truiton)
                .into(viewHolder.tv_image);
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder{
        private TextView tv_name,tv_version,tv_api_level;
        public ImageView tv_image;
        public ViewHolder(View view) {
            super(view);

            tv_name = (TextView)view.findViewById(R.id.tv_name);
            tv_version = (TextView)view.findViewById(R.id.tv_version);
            tv_api_level = (TextView)view.findViewById(R.id.tv_api_level);
            tv_image= (ImageView) view.findViewById(R.id.img);

        }
    }

}

Si quelqu'un peut aider s'il vous plaît faites cela!

7
erfan

Ajoutez simplement ceci lorsque vous obtenez une image à partir de URL, ce code réduit la taille de cette image.

tu peux aussi faire ça,

ByteArrayOutputStream bytes = new ByteArrayOutputStream();

    //save scaled down image to cache dir
    newBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

    File imageFile = new File(filePath);

    // write the bytes in file
    FileOutputStream fo = new FileOutputStream(imageFile);
    fo.write(bytes.toByteArray());

vérifier cet exemple

2
Amit Vaghela

J'ai utilisé la méthode dontTransform() et cela m'a presque sauvé une seconde. Les images sont chargées dans la liste en premier.

2
Prabhat

utilisez diskCacheStrategy (DiskCacheStrategy.ALL) .

pour plus de visites, cliquez ici Cliquez ici

0
Rjz Satvara