为 ImageAdapter 异步获取远程图像

发布于 2024-11-14 13:35:33 字数 487 浏览 2 评论 0原文

我有一个 getView() 的 Android Gallery ImageAdapter 实现,如下所示:

public View getView(int arg0, View arg1, ViewGroup arg2) {
    String strURL = "http://app1.exactdev.co.za/android/celebs/celeb" + (arg0+1) + ".jpg";      
    Bitmap bm = RemoteBitMapHelper.getRemoteBitMap(strURL); //synchronous request               

    ImageView i = new ImageView(ctx);       
    i.setImageBitmap(bm); 
    return i;
}

How can I make getView do it job asynchronously?

I have an Android Gallery ImageAdapter implementation for getView() that looks as follows:

public View getView(int arg0, View arg1, ViewGroup arg2) {
    String strURL = "http://app1.exactdev.co.za/android/celebs/celeb" + (arg0+1) + ".jpg";      
    Bitmap bm = RemoteBitMapHelper.getRemoteBitMap(strURL); //synchronous request               

    ImageView i = new ImageView(ctx);       
    i.setImageBitmap(bm); 
    return i;
}

How can I make getView do its job asynchronously?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终难遇 2024-11-21 13:35:33

简单的答案是您可以将其放入 AsyncTask 中。类似于以下内容(未经测试)

public View getView(int arg0, View arg1, ViewGroup arg2) {

    final ImageView i = new ImageView(ctx);
    String url = "http://app1.exactdev.co.za/android/celebs/celeb" + (arg0 + 1) + ".jpg";

    new AsyncTask<String, Void, Bitmap>() {

        @Override
        protected Bitmap doInBackground(String... urls) {
            return RemoteBitMapHelper.getRemoteBitMap(urls[0]);
        }

        @Override
        protected void onPostExecute(Bitmap result) {
            if (result != null) {
                i.setImageBitmap(result);
            }
        }

    }.execute(url);

    return i;
}

The simple answer is you could put it inside an AsyncTask. Something like the following (untested)

public View getView(int arg0, View arg1, ViewGroup arg2) {

    final ImageView i = new ImageView(ctx);
    String url = "http://app1.exactdev.co.za/android/celebs/celeb" + (arg0 + 1) + ".jpg";

    new AsyncTask<String, Void, Bitmap>() {

        @Override
        protected Bitmap doInBackground(String... urls) {
            return RemoteBitMapHelper.getRemoteBitMap(urls[0]);
        }

        @Override
        protected void onPostExecute(Bitmap result) {
            if (result != null) {
                i.setImageBitmap(result);
            }
        }

    }.execute(url);

    return i;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文