我必须在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
,可能会出现类似列表的行为,这种行为不会经常回收和重绘。
答案 0 :(得分:1)
如何阻止这种回收的发生?
你不是。您创建了一个更丰富的模型对象。而不是看似ListAdapter<String>
的内容,而是ListAdapter<Thing>
,其中:
Thing
保存您现有的字符串值(element
)Thing
缓存Html.fromHtml()
结果getView()
从html
获取CharSequence
Thing
,因此可以利用缓存随意替换比Thing
更适用的名词,当然......: - )