Html.fromHtml()在ListView回收问题中使用自定义ImageGetter

时间:2015-01-24 19:49:31

标签: java android android-listview

我必须在ListView中显示一些带有互联网图片的HTML。图像以自定义Html.ImageGetter处理。问题是,我需要TextView可以将图像下载到里面。这导致必须在ArrayAdapter的{​​{1}}方法中包含HTML解析。但是,Android系统会循环调用该方法,因为它会回收并重新绘制元素。

如何阻止这种回收的发生?我想我必须使用不同的流程。这是我当前的getView方法:

getView()

如果不使用@Override public View getView(int position, View convertView, ViewGroup parent) { TextView view = new TextView(context); CharSequence element = getItem(position); CharSequence html = Html.fromHtml(element.toString(), new MessageImageGetter(context, view), null); view.setText(html); view.setPadding(12, 4, 12, 4); return view; } ListView,可能会出现类似列表的行为,这种行为不会经常回收和重绘。

1 个答案:

答案 0 :(得分:1)

  

如何阻止这种回收的发生?

你不是。您创建了一个更丰富的模型对象。而不是看似ListAdapter<String>的内容,而是ListAdapter<Thing>,其中:

  • Thing保存您现有的字符串值(element
  • Thing缓存Html.fromHtml()结果
  • 您的getView()html获取CharSequence Thing,因此可以利用缓存

随意替换比Thing更适用的名词,当然......: - )