Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我将图像从Url设置为recycleView时,它会变慢,我如何修复它?_Java_Android_Image_Android Recyclerview - Fatal编程技术网

Java 当我将图像从Url设置为recycleView时,它会变慢,我如何修复它?

Java 当我将图像从Url设置为recycleView时,它会变慢,我如何修复它?,java,android,image,android-recyclerview,Java,Android,Image,Android Recyclerview,我有一个50街区的回收站。该块有两个ImageView。我应该从不同的URL为每个块设置两个图像。当我开始我的程序时,我翻动列表,我的程序就会慢下来。我想这是因为当我滚动列表时,recyclerView会再次转到URL拍摄图像。我说得对吗?我怎样才能修好它 这就是我从URL将图像设置为recyclerView的方式 URL newurl = new URL(imageString); Bitmap mIcon_val = BitmapFactory.decodeStream(newurl.ope

我有一个50街区的回收站。该块有两个ImageView。我应该从不同的URL为每个块设置两个图像。当我开始我的程序时,我翻动列表,我的程序就会慢下来。我想这是因为当我滚动列表时,recyclerView会再次转到URL拍摄图像。我说得对吗?我怎样才能修好它

这就是我从URL将图像设置为recyclerView的方式

URL newurl = new URL(imageString);
Bitmap mIcon_val = BitmapFactory.decodeStream(newurl.openConnection().getInputStream());
holder.myImageView.setImageBitmap(mIcon_val);

您可以使用毕加索或glide完成此任务-:

Glide.with(context).load(model.getVoucher_image()).into(holder.imageview);

您正在使用位图加载图像。在图像视图中加载位图是一项非常消耗内存的任务

相反,您可以使用第三方库直接从网络URL加载图像

Glide.with(context)
   .load("URL HERE")
   .into(imageView);
其中一个图书馆是Glide。您只需要将imageView和URL传递给它,它就会直接加载图像

Glide.with(context)
   .load("URL HERE")
   .into(imageView);
即使您可以在将图像加载到imageView之前调整图像大小,通过这种方式,您也可以减少内存消耗

 RequestOptions requestOptions = new RequestOptions();
 requestOptions.override(120, 120);
 requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);

 Glide.with(context)
   .load("URL HERE")
   .apply(requestOptions)
   .into(imageView);

使用Glide高效加载图像

示例 应用程序内模块
gradle
添加此

repositories {
  mavenCentral()
  google()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.9.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}
然后使用glide从
drawable

Glide.with(this).load(R.drawable.image_name).into(imageView);
示例

onBindViewHolder执行此操作

Glide.with(this).load(logoImage).into(holder.logo);

什么是“空地”和“模型”?Glide是一个用于显示图像和模型的库。getvoucherimage是您要加载的url或位图导入实现'com.github.bumptech.Glide:Glide:4.9.0'在您的构建中。Glide:Glide:4.9.0。Grade可能重复我的建议使用库加载图像作为下面的答案Toldy如果您想要简单,也可以使用毕加索库Glide V3,V4,如果您想要最新的支持+可扩展性,并且避免使用毕加索,因为它非常固执己见。为了使应用程序正常工作,您必须根据其规则调整代码。