Java 用于在TextView中设置多个图像的异步Html.ImageGetter

Java 用于在TextView中设置多个图像的异步Html.ImageGetter,java,android,html,android-image,Java,Android,Html,Android Image,我正在编写一个应用程序,它获取HTML页面并解析它们以显示在屏幕上。具体来说,该应用程序从留言板中提取HTML并列出用户发表的帖子 问题是帖子中的很多内容都是标签中的图片,所以我需要编写Html.ImageGetter来处理图像的下载 我的textView.setText()方法如下所示: myTextView.setText(Html.fromHtml(myText, new ImageGetter() { @Override

我正在编写一个应用程序,它获取HTML页面并解析它们以显示在屏幕上。具体来说,该应用程序从留言板中提取HTML并列出用户发表的帖子

问题是帖子中的很多内容都是
标签中的图片,所以我需要编写
Html.ImageGetter
来处理图像的下载

我的
textView.setText()
方法如下所示:

myTextView.setText(Html.fromHtml(myText, new ImageGetter() {                 
        @Override
        public Drawable getDrawable(String source) {
        Drawable d;

        // Need to async download image here 

         return d;
        }
    }, null));

同步执行此操作很简单,但是否有一种异步执行此操作的建议方法,以便它不会锁定我的UI线程?我还希望最终构建这些图像的缓存,但我认为,一旦异步下载存在,这将非常简单。

我将使用
异步任务
线程
/
处理程序
组合

同步执行此操作很简单,但是否有一种异步执行此操作的建议方法,以便它不会锁定我的UI线程


这将是困难的,也许是不可能的。你必须马上归还一些东西。即使这是一个占位符,下载完成后,您仍然面临如何替换占位符的挑战。由于您无法访问呈现图像的
图像视图
(如果存在
图像视图
),我不知道您将如何安排替换占位符。

在显示html之前,如何使用不可见的html.fromHtml提取所有URL,将这些URL放入列表中,异步下载所有图像,将它们存储在内存缓存中,然后实现ImageGetter,只需使用url作为键和drawable作为值进行缓存查找。

要异步下载图像并将其存储在内存缓存中,这里有一个小型库:)

我明白你的意思。有没有另一种方法可以显示标记分散在各处的Html?我读过一些关于使用WebView的文章,但我并不想在ListView中将许多WebView作为行。任何其他建议都非常感谢:)@ude19:
ListView
中的
WebView
可能由于滚动而出现问题。但是,与此同时,
Html.fromHtml()
中的
支持似乎针对本地资产(例如,将表情符号转换为等效图标)。此外,我真的怀疑您是否希望在
列表视图中包含完整的留言板条目,因为它们可能非常长。我谦恭地建议你考虑让你的代码> ListVIEW/COD>只显示文章的前3-4行,纯文本,如果在“代码> > ListVIEW < /Cord>条目>点击CommonsWare代码> WebVIEW <代码>。我将在前进的同时考虑这一切。@ CommonsWare:完成这项任务还有其他建议吗?我真的很想通过在信息中显示图像来复制留言板的感觉。同步执行并在设备上本地缓存图像怎么样?这还需要一个选项,允许用户在连接有限的情况下关闭图像下载。@数据19:“同步进行并在设备上本地缓存图像怎么样?”--如果“同步”是指在
ImageGetter
中实际下载图像,则您的应用程序将因ANR崩溃,下载时列表不会滚动。您可能希望考虑将整个UI呈现在<代码> WebVIEW/COD>中。这个建议是否要求在显示 ListVIEW < /代码>之前下载并缓存整个列表?如果是这样的话,我不确定这是否比同步做得更好。我假设OP熟悉AsyncTask等,并特别询问如何使用
ListView中的
ImageGetter.getDrawable()
来做这件事。见我的亲戚。