2011-09-14 61 views
1

目前我拉出我的所有聯繫人,並在ListView顯示它。接下來,對於列表中的每個聯繫人,我都會使用我自己的表格進行檢查,並在他是註冊用戶的情況下顯示圖標。到目前爲止,我曾嘗試以下方法:的Android的ListView,聯繫人和自己的數據表

1)在適配器的getView(),對於每一行,我通過傳遞接觸式ID叫上我自己的表的查詢。這會降低ListView的滾動速度,並可能會遇到內存問題。

2)在getView()中,對於每一行,我將聯繫人ID &圖像視圖添加到隊列中,該隊列執行查詢1和1並顯示圖標。這種類型的工程,但有時顯示變得怪異,隨機顯示圖標然後消失。

3)I中使用的MatrixCursor並試圖加入的數據,但在步驟1中的查詢被稱爲太所以再次減慢的顯示。

任何人都可以發表評論或給出更好的建議將是巨大的!謝謝。

回答

0

檢查列表視圖性能谷歌IO視頻:http://www.youtube.com/watch?v=wDBM6wVEO70

基本上,你需要做的是兩兩件事:

  1. 實現自己的CursorAdapter保存你的數據,並將其附加到的項目,如標籤。這會加速滾動很多,只會查看一次數據。否則,每當物品進入視野時,你就會打你的桌子。 Android操作系統aggresive大約處置項目。這叫做viewholder模式,看它這裏討論:android listview viewholder. when to use it, and when not to我沒有找到更好的例子,但你的想法..

  2. 我會從緩存數據庫項目到列表中,使你不不必爲每個項目查詢。

+0

我實際上做了1和2,想知道是否有更好的方法?我在考慮是否有可能以某種方式將聯繫人和我的表的數據加在一起以產生1個光標,以便檢查更容易和更快速。 – Maurice

+0

當您每條記錄查找屬性時,最有可能減速。我懷疑,因爲你使用的ContentProvider,但你可以從聯繫人數據同步到你的數據庫,比查找一切從自己的數據庫,你可以加入數據。但我認爲這將是最後的手段。如果你有你的數據「方便」,並沒有去每次通話的數據庫,它應該是非常快的 – katit

+0

我一直面臨的問題是它「迄今爲止得心應手」....哦,好吧,謝謝無論如何,我將堅持訪問分貝,直到我能想到的東西。 – Maurice

相關問題