`
FariyTale
  • 浏览: 193914 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android ListView 异步加载图片

阅读更多

利用AsyncTask异步加载,实现平滑滑动加载网络图片,AsyncTask代码:

public class ImageLoadTask extends AsyncTask<Void, Void, Void> {
		private int position;
		private ImageView image;
		// 初始化
		public ImageLoadTask(Context context,int position,ImageView image) {
			this.position = position;
			this.image = image;
		}

		@Override
		protected Void doInBackground(Void... params) {
			Bean bean = beans.get(position);
			Bitmap bitmap = BitmapFactory.decodeStream(
//					加载图片的方法
					Request.HandlerData(ImagePath[position]));
			bean.setImage(bitmap);
			bean.setFlag(true);
			publishProgress(); // 通知去更新UI
			return null;
		}

		public void onProgressUpdate(Void... voids) {
			if (isCancelled())
				return;
			image.setImageBitmap(beans.get(position).getImage());
		}
	}

 Adapter代码:

public class ImageAdapter extends BaseAdapter {
		public ImageAdapter(Context context) {
		}
		@Override
		public int getCount() {
			return beans.size();
		}
		@Override
		public Bean getItem(int position) {
			return beans.get(position);
		}
		@Override
		public long getItemId(int position) {
			return position;
		}
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ImageView i = new ImageView(getApplicationContext());
			Bean b = beans.get(position);
			//如果有图片则读取,没有则跳过
			i.setImageBitmap(b.getImage());
			if (b.getFlag() == false ) {
				new ImageLoadTask(ListViewReadImageAscy.this,position,i).execute();
			}
			return i;
		}
	}

 封装图片vo代码:

public class Bean {
		private Bitmap image;
        private boolean flag = false;;
		
        public Bitmap getImage() {
			return image;
		}

		public void setImage(Bitmap image) {
			this.image = image;
		}
		
		public boolean getFlag(){
			return flag;
		}
		
		public void setFlag(boolean flag){
			this.flag = flag;
		}
	}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics