如何异步下载ListView HTML图像?

时间:2012-07-29 19:11:53

标签: android html listview android-listview android-asynctask

作为原型,我尝试修改android-imagedownloader demo中的Android Developers Blog以使用HTML图片代码而不是硬编码ImageViews。我已使用以下内容替换ImageAdapter.getView()来修改它:

public View getView(final int position, View view, final ViewGroup parent) {
   TextView textView = (TextView) view;
    if (textView == null) {
       textView = new TextView(parent.getContext());
       textView.setPadding(6, 6, 6, 6);
    }
    textView.setText(Html.fromHtml("<img src=\"" + URLS[position] + "\"/>", 
       new ImageGetter() {
       @Override public Drawable getDrawable(final String source) {
          ImageView imageView = new ImageView(parent.getContext());
          imageDownloader.download(source, imageView);
          return imageView.getDrawable();
       }
    }, null));

    return textView;
}

虽然没有任何图像出现在ListView中,但Logcat中没有报告错误。与TextViews不同的ImageViews是否需要在下载图像后以某种方式刷新?

原始getView()是:

public View getView(int position, View view, ViewGroup parent) {
    if (view == null) {
        view = new ImageView(parent.getContext());
        view.setPadding(6, 6, 6, 6);
    }

    imageDownloader.download(URLS[position], (ImageView) view);

    return view;
}

1 个答案:

答案 0 :(得分:0)

我将放弃使用HTML TextView渲染图像的原始想法,因为我不认为将布局限制为每TextView个图像是一个问题。对于那些仍然真的想要这样做的人,this answer应该引导您找到正确的解决方案。您必须再次将TextView传递给BitmapDownloaderTask并再次传递onPostExecute setText,但需要使用新下载或“已解除”的图片。

可能还需要强制更新ListViewRomain Guy's guidance行中的行。