從onLoadFinished
加載將無任何問題。我在一個寵物項目中做了類似的事情。我從我自己的ContentProvider加載數據,然後從手機的Contact ContentProvider加載聯繫人數據。我的數據庫中的每個條目都可以引用多個聯繫人,所以我必須先加載我的項目,然後才能知道要加載的聯繫信息。當我第一次收到onLoadFinished
中的項目數據時,我將init/restart LoaderManager調用鏈接起來。它工作得很好,我之後使用聯繫人數據作爲列表。當然,我沒有使用這種方法將數據加載到現有列表視圖項目的視圖中。我在我的物品的詳細視圖中使用了自己列表中的數據。它應該仍然可以處理你想要做的事情,但是它可能會混亂地將數據附加到視圖和內容,特別是因爲視圖「生命週期」不在你的控制範圍之內。
一個更好的方法IMO可能會編寫一個自定義的CursorAdapter,它可以在創建視圖時使用AsyncTask或AsyncQueryHandler來獲取額外的數據。確保在列表滾動時緩存數據供隨後使用。第二種方法具有獨立於外部/輔助裝載機的優點。它封裝了顯示所需數據所需的所有邏輯,其中包括加載缺少的部分。它保持視圖數據和顯示邏輯的一致性,安全地隱藏在可重用模塊內。
爲什麼首先需要2次調用來獲取數據?啓動第二個加載程序的觸發器是什麼?它是否會顯示更多數據的某種列表項單擊? – Sean 2013-02-26 19:12:25
我可以看到,您只想爲列表視圖中的可見項目執行此操作。但是,如果您在初始列表數據之後立即加載所有項目的附加數據,那麼只需在同一個加載程序中一步完成。 – 2013-02-26 19:12:52
@Sean事情是,我第一次負載收集通話記錄,並在第二我收集每個電話號碼的其他信息,如地點 – Azat 2013-02-26 19:35:09