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!
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
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.
utilisez diskCacheStrategy (DiskCacheStrategy.ALL) .
pour plus de visites, cliquez ici Cliquez ici