在将我的问题标记为重复之前,我并未谈论将图像延迟加载到ListView中。我想要做的是懒洋洋地加载(孩子)视图。让我解释一下......
我有一个ListView,我想用TextViews填充。 TextViews使用ImageSpans显示文本。如果我输入包含许多ImageSpans的文本,渲染它需要花费很多时间,这会极大地降低ListView的滚动性能。
要解决这个问题,我想显示一个加载微调器,直到TextView就像我们为ImageView做的那样。问题是ImageView显示静态图像,TextView需要呈现其内容。我想在Bitmap上绘制TextView而不是显示位图,但我无法控制TextView的文本,我担心它最终可能超过最大位图大小。我提出的所有其他方法都涉及从非ui线程调用View的draw(Canvas)
方法,该线程在android中受到限制。所以我的问题是如何懒惰地渲染ListView的视图?这甚至可能吗?
答案 0 :(得分:1)
我认为这是可行的。
getView()
方法创建带进度指示器的视图。AsyncTask
)。AsyncTask
完成绘制后,您可以更新ImageView
中的AsyncTask.onPostExecute()
,这是在UI线程中调用的。查看本教程。这是一个类似的问题。 http://developer.android.com/training/displaying-bitmaps/process-bitmap.html
您可以创建自己的View类来封装此异步加载。 Pelase要知道ListView
回收View
屏幕外的实例,这会增加一些复杂性。