停止从缓存加载图像(包含Android凌空图像的GridView)

时间:2014-06-23 13:46:42

标签: android caching gridview android-volley

我有一个gridView,其中只包含使用Volley库从服务器动态加载的图像。 布局文件:

<GridView  xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:columnWidth="90dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:gravity="center"
android:stretchMode="columnWidth" >  
</GridView>

所以我正在使用一个使用Volley下载图像的适配器从服务器加载所有图像:

   public class ImageAdapter extends ArrayAdapter<Album>{
String urlImage;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();

// Constructor
public ImageAdapter(Activity activity, List<Album> items) {
    super(activity, R.layout.custum_grid_view_item, items);
}

    @Override
public View getView(int position, View convertView, ViewGroup parent) {         
    Activity activity = (Activity) getContext();
    LayoutInflater inflater = activity.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.custum_grid_view_item, null);
    Album item = getItem(position);


    final ImageView  myImageOfItemList = (ImageView) rowView
            .findViewById(R.id.image_grid_view);

        urlImage =item.getImage();

    myImageOfItemList.setTag(urlImage);


    imageLoader.get(urlImage, new ImageListener() {

           @Override
           public void onErrorResponse(VolleyError error) {
                   myImageOfItemList.setImageDrawable(getContext()
                              .getResources().getDrawable(R.drawable.ic_home));
            Log.e("ImageLoadError", "Image Load Error: " + error.getMessage());
           }

           @Override
           public void onResponse(ImageContainer response, boolean arg1) {
            if (response.getBitmap() != null) {
             // load image into imageview
                myImageOfItemList.setImageBitmap(response.getBitmap());
            }
           }
          });
    return rowView;
}

  }

问题出在Android应用程序用户访问gridView之后,如果在服务器中更新了图像,则旧图像始终存储在缓存中,以便用户在第一次访问gridView项目后永远不会获得更新版本

我尝试使用以下方法清除,删除和拒绝缓存:

AppController.getInstance().getRequestQueue().getCache().remove(url);
AppController.getInstance().getRequestQueue().getCache().invalidate(url, true);
MemoryCacheUtil.removeFromCache(imageUri, imageLoader.getMemoryCache());

但即使我总是在&#34; onResume&#34;中重新加载数据,它总是一样的。我的活动。 因此,如果添加或删除图像,它可以正常工作,但是当我更改它时,它始终是显示的旧图像。

0 个答案:

没有答案