NetworkImageView手动从缓存加载图像

时间:2016-01-07 13:31:16

标签: android android-volley networkimageview

我在RecyclerView.Adapter中使用NetworkImageView来下载一些图像并将它们显示在列表中。

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

    final Post current = mDataSet.get(position);

    NetworkImageView imgView = (NetworkImageView)holder.itemView.findViewById(R.id.post_image);
    imgView.setImageUrl(current.getImagePath(), ControllerVolley.getInstance().getImageLoader());
}

但我意识到每次尝试再次下载图像,即使图像已经缓存在磁盘上。

当此下载失败时会出现此问题,因为我无法将Response.Listener设置为此NetworkImageView,因此无法再次下载。

因此,我正在检查图像是否已经过缓存以手动加载。我正在使用this问题推荐的CustomNetworkImageView。

  CustomNetworkImageView imgView = (CustomNetworkImageView)holder.itemView.findViewById(R.id.post_image);
  Cache.Entry entry = ControllerVolley.getInstance().getDiskCache().get("0:"+current.getImagePath());
    if (entry != null) {
        byte[] dataBitmap = entry.data;
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        imgView.setLocalImageBitmap(BitmapFactory.decodeByteArray(dataBitmap, 0, dataBitmap.length, options));

    } else {
        imgView.setImageUrl(current.getImagePath(), ControllerVolley.getInstance().getImageLoader());

    }

但它没有加载位图。

有没有更好的方法来处理这种情况?

0 个答案:

没有答案