4

我有应用程序连接服务器,当图片加载看起来非常缓慢,当滚动上下滑动似乎想再次阅读图像! 这是我的下滑适配器:加载图像滑行速度很慢

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); 

     } 
    } 

} 

如果任何人能帮助请做到这一点!

回答

2

只需添加这,当您从URL获得的图像,该代码减少了图像

,你也可以做到这一点的大小,

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()); 

检查this example

1

使用diskCacheStrategy(DiskCacheStrategy .ALL)

的详情,请访问该Click Here

1

我用dontTransform()方法,它几乎救了我一秒钟。图像首先被加载到列表中。