[英]Lazy loading ListView(Not that kind of lazy)
在將我的問題標記為重復之前,我不是在談論將圖像延遲加載到ListView中。 我想做的是懶惰地加載(子)視圖。 讓我解釋...
我有一個ListView,我想用TextViews填充它。 TextViews使用ImageSpans顯示文本。 而且,如果我輸入包含許多ImageSpans的文本,則渲染將花費大量時間,這將嚴重降低ListView的滾動性能。
為了解決此問題,我想像在ImageView一樣,顯示一個加載微調框,直到TextView准備就緒。 問題是ImageView顯示靜態圖像,TextView需要呈現其內容。 我考慮過通過位圖繪制TextView而不是顯示該位圖,但是我無法控制TextView的文本,而且恐怕最終它可能會超過最大位圖的大小。 我想出的所有其他方式都涉及從非ui線程中調用View的draw(Canvas)
方法,該線程在android中受到限制。 所以我的問題是如何懶惰地渲染ListView的View? 這有可能嗎?
我認為這是可行的。
getView()
方法內部,使用進度指示器創建視圖。 AsyncTask
)。 AsyncTask
完成繪制,您就可以在AsyncTask.onPostExecute()
更新ImageView
,在UI線程中調用它。 查看本教程。 這是一個類似的問題。 http://developer.android.com/training/displaying-bitmaps/process-bitmap.html
您可以創建自己的View類來封裝此異步加載。 請注意, ListView
回收不在屏幕上顯示的View
實例,這會增加一些復雜性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.