问题描述:
在获得服务器接口的json之后,将一切信息都显示出来稳妥后,来搞比较特别的图片加载,服务器文件夹的所有静态图片存放在本地,想要在Android加载服务器静态图片,如下是使用的第一种方法,按道理是可以的,但是因为我想加载到listView中,这个是适配器中的文件,单独给每个列表中的图片资源进行加载,在传送过来的context中却无法使用线程更新控件,卡在这就很尴尬。但是在正常的Activity中这种写法是可以的。
private void InternetSever(String url, ImageView imageView1) {
OkHttpClient client = new OkHttpClient();
final Request request = new Request.Builder()
.url(url)
.get()
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println(e);
Looper.prepare();
Toast.makeText(context, "网络异常,请稍后再试!", Toast.LENGTH_SHORT).show();
Looper.loop();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final byte[] data = response.body().bytes();
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
//通过imageview,设置图片
imageView1.setImageBitmap(bitmap);
}
});
}
解决方案:
使用了第三方库
// 加载网络图片
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'com.android.support:appcompat-v7:24.2.1'
使用方法也是非常的无脑:
ImageView imageView1 = view1.findViewById(R.id.image1);
String url = URL + "/media/" + list.get(position).getNews_avatars();
// InternetSever(url, imageView1);
Glide.with(context) //主要这一句
.load(url)
.into(imageView1);
在Android应用开发中,当需要在ListView中加载服务器上的静态图片时,直接使用线程更新可能会导致适配器中的控件无法正确更新。文章讲述了在常规Activity中能够正常工作的图片加载方式在ListView适配器中遇到的问题,并提出了使用Glide第三方库作为解决方案。Glide库提供了一种简单的方法,通过一行代码即可实现网络图片的加载,解决了在ListView中加载图片的问题。
320

被折叠的 条评论
为什么被折叠?



