用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - android代码库

多图片后台下载适配器 (多线程 后台下载图片)

2013-04-13 作者: 小蜜锋举报

[android]代码库

public class ImageListAdapter extends BaseAdapter {
    private Context context;
    private String[] myImages = null;
    public ImageListAdapter (Context context, String[] myImages) {
        this.context = context;
        this.myImages = myImages;
    }
    @Override
    public int getCount() {
        if (myImages == null) {
            return 0;
        }
        return myImages.length;
    }
    @Override
    public String getItem (int position) {
        if (position < 0 || myImages == null || position > myImages.length) {
            return null;
        }
        return myImages[position];
    }
    @Override
    public long getItemId (int position) {
        return position;
    }
    @Override
    public View getView (int position, View convertView, ViewGroup parent) {
        View item = null;
        if (convertView != null) {
            item = convertView;
        } else {
            item = View.inflate (context, R.layout.image_item, null);
        }
        final ImageView imageView = (ImageView) item.findViewById (R.id.image);
        final String image = getItem (position);
        if (image == null) {
            return item;
        }
        //对每个图片地址创建一个线程,
        new Thread() {
            public void run() {
                Message msg = new Message();
                msg.what = 0;
                //getBitmap省略了,就是从网上通过http下载图片,转化成一个Bitmap
                Bitmap bitmap = getBitmap (image);
                List list = new ArrayList();
                list.add (bitmap);
                list.add (imageView);
                msg.obj = list;
                handler.sendMessage (msg);
            }
        } .start();
        return item;
    }
    private Handler handler = new Handler() {
        @Override
        public void handleMessage (Message msg) {
            switch (msg.what) {
            case 0://接到从线程内传来的图片bitmap和imageView.
                //这里只是将bitmap传到imageView中就行了。只所以不在线程中做是考虑到线程的安全性。
                List list = (List) msg.obj;
                Bitmap bitmap = (Bitmap) list.get (0);
                ImageView iv = (ImageView) list.get (1);
                iv.setImageBitmap (bitmap);
                break;
            default:
                super.handleMessage (msg);
            }
        }
    };
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...