@Override
 public void onScrollStateChanged(AbsListView view, int scrollState) {
   if (scrollState == SCROLL_STATE_IDLE) {
     mImageLoader.loadImages(mStart, mEnd);
   } else {
     mImageLoader.cancelAllTasks();
   }
 }
 public MyAdapterUseDoubleCaches(Context context, List<String> data, ListView listView) {
   this.mData = data;
   mInflater = LayoutInflater.from(context);
   mImageLoader = new ImageLoaderWithDoubleCaches(context, listView);
   mImageLoader.loadImages(mStart, mEnd);
   listView.setOnScrollListener(this);
 }
 @Override
 public void onScroll(
     AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
   mStart = firstVisibleItem;
   mEnd = firstVisibleItem + visibleItemCount;
   if (mFirstFlag && visibleItemCount > 0) {
     mImageLoader.loadImages(mStart, mEnd);
     mFirstFlag = false;
   }
 }
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
   String url = mData.get(position);
   ViewHolder viewHolder = null;
   if (convertView == null) {
     viewHolder = new ViewHolder();
     convertView = mInflater.inflate(R.layout.listview_item, null);
     viewHolder.imageView = (ImageView) convertView.findViewById(R.id.iv_lv_item);
     convertView.setTag(viewHolder);
   } else {
     viewHolder = (ViewHolder) convertView.getTag();
   }
   viewHolder.imageView.setTag(url);
   viewHolder.imageView.setImageResource(R.drawable.ic_launcher);
   mImageLoader.showImage(url, viewHolder.imageView);
   return convertView;
 }
 public void flushCache() {
   mImageLoader.flushCache();
 }