无法清除Universal Imageloader ImageGridFragment中的缓存内存

时间:2015-05-16 10:14:04

标签: android android-gridview universal-image-loader

尝试使用UniversalImageLoader从网络服务器以网格视图显示图像。该代码工作正常。但主要问题是第二次看到网格视图时显示以前的URL图像。我正在尝试使用此代码来清除缓存

    ImageLoader.getInstance().clearMemoryCache();
    ImageLoader.getInstance().clearDiscCache();

但不行。这是我的完整代码

public class ImageGridFragment extends AbsListViewBaseFragment {

public static final int INDEX = 1;
String description="";
 ArrayList<String> img = new ArrayList<String>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fr_image_grid, container, false);

    listView = (GridView) rootView.findViewById(R.id.grid);

    Bundle bundle = this.getArguments();

    description = bundle.getString("description");
    String[] separated= description.split(",");
    img.clear();
    for(int i=0;i<separated.length;i++)
    {
    img.add(separated[i]);
    }

    ImageGalleryFragment.imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity()));
    ImageLoader.getInstance().clearMemoryCache();
    ImageLoader.getInstance().clearDiscCache();
    ((GridView) listView).setAdapter(new ImageAdapter(getActivity()));
    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
          //  Toast.makeText(getActivity().getApplicationContext(), String.valueOf(position), Toast.LENGTH_LONG).show();

           // startImagePagerActivity(position);
            ImageLoader.getInstance().clearMemoryCache();
            ImageLoader.getInstance().clearDiscCache();
            Intent intent = new Intent(getActivity(), SimpleImageActivitya.class);
            intent.putExtra(Constants.Extra.FRAGMENT_INDEX, ImagePagerFragment.INDEX);
            intent.putExtra("description", description);
            startActivity(intent);
        }
    });
    return rootView;
}

private  class ImageAdapter extends BaseAdapter {

   String[] IMAGE_URLS =  img.toArray(new String[img.size()]);

    private LayoutInflater inflater;

    private DisplayImageOptions options;

    ImageAdapter(Context context) {
        inflater = LayoutInflater.from(context);

        options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.ic_stub)
                .showImageForEmptyUri(R.drawable.ic_empty)
                .showImageOnFail(R.drawable.ic_error)
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .considerExifParams(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .build();
    }

    @Override
    public int getCount() {
        return IMAGE_URLS.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;
        View view = convertView;
        if (view == null) {
            view = inflater.inflate(R.layout.item_grid_image, parent, false);
            holder = new ViewHolder();
            assert view != null;
            holder.imageView = (ImageView) view.findViewById(R.id.image);
            holder.progressBar = (ProgressBar) view.findViewById(R.id.progress);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }

        ImageLoader.getInstance()
                .displayImage(IMAGE_URLS[position], holder.imageView, options, new SimpleImageLoadingListener() {
                    @Override
                    public void onLoadingStarted(String imageUri, View view) {
                        holder.progressBar.setProgress(0);
                        holder.progressBar.setVisibility(View.VISIBLE);
                    }

                    @Override
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                        holder.progressBar.setVisibility(View.GONE);
                    }

                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                        holder.progressBar.setVisibility(View.GONE);



                    }
                }, new ImageLoadingProgressListener() {
                    @Override
                    public void onProgressUpdate(String imageUri, View view, int current, int total) {
                        holder.progressBar.setProgress(Math.round(100.0f * current / total));
                    }
                });


        return view;
    }
}

static class ViewHolder {
    ImageView imageView;
    ProgressBar progressBar;
}}

0 个答案:

没有答案