Glide:加载url,因为位图无法正常工作

时间:2016-11-04 09:18:26

标签: android android-glide

我想使用Glide从服务器加载位图。如果成功,则将其放入我的ImageView,然后将其添加到我的ArrayList。如果它失败(打破网址,没有互联网等),请将ImageView设置为我的默认图像。但Glide的听众根本不工作,LogCat也没有显示" onException"和" onResourceReady"一点都不我的代码出了什么问题?

Glide.with(activity.getApplicationContext())
        .load(MainActivity.URL_SERVER + "/asset/" + imageUrl.getString(i))
        .signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
        .listener(new RequestListener<String, GlideDrawable>() {
            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                ivImage.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.noimage));
                return false;
            }
            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                ivImage.setImageDrawable(resource);
                imageLoadedBitmap.add(((GlideBitmapDrawable) resource).getBitmap());
                return false;
            }
        });

3 个答案:

答案 0 :(得分:2)

截至目前,该方法链中的任何内容实际上都不会触发图像加载操作。您最后可以使用.into(ivImage),只需使用侦听器将位图添加到数组中。或者您可以使用.preload()进行更多自定义。另外,使用.error(R.drawable.noimage)表示错误图像。

在数组中存储位图看起来不错。如果您要在列表中加载图像,请在您的适配器中放置滑行调用,然后让滑行处理捕获本身。

答案 1 :(得分:0)

只需在适配器中使用以下代码:

Glide.with(context).load(url).error(R.drawable.noimage).centerCrop().crossFade().into(ivImage);

答案 2 :(得分:0)

您可以添加默认占位符,直到图片加载为止。

Glide.with(getActivity()) 
  load(backgroundImage).placeholder(R.drawable.no_images); 

当图像无法加载错误标记时,您也可以添加不同的占位符。

Glide.with(getActivity()).load(backgroundImage).placeholder(R.drawable.no_images).error(R.drawable.no_images);