簡體   English   中英

延遲加載ListView(不是那種延遲)

[英]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? 這有可能嗎?

我認為這是可行的。

  1. 在適配器的getView()方法內部,使用進度指示器創建視圖。
  2. 將一個輔助線程與該視圖相關聯,該視圖將對位圖進行大量繪制( AsyncTask )。
  3. 一旦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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM