2010-07-14 48 views
3

我正在實現一個自定義適配器,該適配器遍歷一些數據庫條目,然後鏈接回Android聯繫人數據庫。適配器將查詢內容解析器並將返回的光標中的數據綁定到視圖中。但是,假設我將聯繫人添加到我的私人數據庫,然後將其從Android聯繫人列表中刪除。查詢將失敗,理想情況下,我想從數據庫中刪除該條目並嘗試下一條,並使我應該綁定的視圖無效,以便它不會顯示在屏幕上。當爲適配器實現bindView()時,我可以「跳過」視圖嗎?

我沒有看到一個明顯的方式做到這一點從SDK文檔,所以我認爲我會問lazyweb!

另一種方案是在整個專用聯繫人數據庫實例上迭代,並清理所有壞的條目,但我認爲非常昂貴。

+0

你不能爲光標「查詢」,過濾「不良聯繫人」? – st0le 2010-07-14 03:44:52

+0

我可以提前做,但正如我所說的,在我的應用程序運行時,用戶可以切換到通訊錄應用程序,並刪除聯繫人,返回到我的應用程序並加載聯繫人列表。這意味着每次渲染視圖時,我都必須預先查找列表中的每個聯繫人,然後我可以使用ArrayAdapter。但是如果可以的話,我寧願堅持使用遊標適配器。 – 2010-07-14 03:49:58

回答

4

在這種情況下,你可以不壞的觀點,你必須回到設置爲不可見的視圖。

使用,這在返回的視圖

view.setVisibility(View.GONE); 
1

如果用戶切換到聯繫人列表中的應用程序應用程序將被暫停。如果您使用遊標適配器,則適配器將停用遊標,並且如果您爲自動請求提供了true,則如果您返回到您的應用程序,則會刷新遊標。

是否可以刪除所有條目你不想在你用得到的條目的sql語句列表中顯示?然後這將使清理幾乎自動化。

+0

我很欣賞這個答案,但我認爲對於性能方面的擔憂,我現在要用Pentium10的解決方案。我不能僅僅通過自動查詢來做到這一點,因爲cursoradapter是用於聯繫人ID數據庫的(在Android聯繫人列表中)。每次我從該遊標適配器綁定視圖時,它實際上都會使用該聯繫人進行後續查詢ID進入Android聯繫人列表。所以我需要預處理光標在查詢上來檢查並刪除所有死亡引用,這很貴。 – 2010-07-14 20:08:44

相關問題