- 论坛徽章:
- 0
|
android ListView 异步加载图片
利用AsyncTask异步加载,实现平滑滑动加载网络图片,AsyncTask代码:
Java代码- 1.public class ImageLoadTask extends AsyncTask<Void, Void, Void> {
- 2. private int position;
- 3. private ImageView image;
- 4. // 初始化
- 5. public ImageLoadTask(Context context,int position,ImageView image) {
- 6. this.position = position;
- 7. this.image = image;
- 8. }
- 9.
- 10. @Override
- 11. protected Void doInBackground(Void... params) {
- 12. Bean bean = beans.get(position);
- 13. Bitmap bitmap = BitmapFactory.decodeStream(
- 14.// 加载图片的方法
- 15. Request.HandlerData(ImagePath[position]));
- 16. bean.setImage(bitmap);
- 17. bean.setFlag(true);
- 18. publishProgress(); // 通知去更新UI
- 19. return null;
- 20. }
- 21.
- 22. public void onProgressUpdate(Void... voids) {
- 23. if (isCancelled())
- 24. return;
- 25. image.setImageBitmap(beans.get(position).getImage());
- 26. }
- 27. }
复制代码 Adapter代码:
Java代码- 1.public class ImageAdapter extends BaseAdapter {
- 2. public ImageAdapter(Context context) {
- 3. }
- 4. @Override
- 5. public int getCount() {
- 6. return beans.size();
- 7. }
- 8. @Override
- 9. public Bean getItem(int position) {
- 10. return beans.get(position);
- 11. }
- 12. @Override
- 13. public long getItemId(int position) {
- 14. return position;
- 15. }
- 16. @Override
- 17. public View getView(int position, View convertView, ViewGroup parent) {
- 18. ImageView i = new ImageView(getApplicationContext());
- 19. Bean b = beans.get(position);
- 20. //如果有图片则读取,没有则跳过
- 21. i.setImageBitmap(b.getImage());
- 22. if (b.getFlag() == false ) {
- 23. new ImageLoadTask(ListViewReadImageAscy.this,position,i).execute();
- 24. }
- 25. return i;
- 26. }
- 27. }
-
复制代码 封装图片vo代码:
Java代码- 1.public class Bean {
- 2. private Bitmap image;
- 3. private boolean flag = false;;
- 4.
- 5. public Bitmap getImage() {
- 6. return image;
- 7. }
- 8.
- 9. public void setImage(Bitmap image) {
- 10. this.image = image;
- 11. }
- 12.
- 13. public boolean getFlag(){
- 14. return flag;
- 15. }
- 16.
- 17. public void setFlag(boolean flag){
- 18. this.flag = flag;
- 19. }
- 20. }
复制代码 |
|