我有一个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;中重新加载数据,它总是一样的。我的活动。 因此,如果添加或删除图像,它可以正常工作,但是当我更改它时,它始终是显示的旧图像。