I have app connect with server and when pics load seems so slow and when scroll that up and down seems glide want read image again! This is my adapter of glide:
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);
}
}
}
If any one can help please do that!
I used dontTransform()
method and it almost saved me a second. Images are loaded to the list really first.
Just add this when you get image from URL
, this code reduces the size of that image
you can also do this,
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());
check this example
use diskCacheStrategy(DiskCacheStrategy.ALL) .
for more visit this Click Here
You can use below parts for your glide
. This works for me
.thumbnail( 0.5f )
.diskCacheStrategy( DiskCacheStrategy.ALL )
Like this
Glide.with( context )
.load( arrayList.get().getImage_url())
.thumbnail( 0.5f )
.override( 200, 200 )
.placeholder(R.drawable.placeholder_image)
.diskCacheStrategy( DiskCacheStrategy.ALL )
.into( imageView );
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.