我將從我嘗試完成的事情開始。帶有Loader和EndlessCursorAdapter的ListFragment - 噩夢
我有一個ListFragment,與LoaderCallbacks關聯從數據庫中檢索數據。數據使用AsyncTask下載,並插入到數據庫中。當用戶到達列表底部,使用CWAC-Endless小部件時,AsyncTask將被啓動並下載更多數據。
我在這裏遇到了幾個問題,我試圖在很多晚上解決這個問題,我決定來這裏尋求幫助。
第一個問題是configChanges。當用戶旋轉設備時,活動將被銷燬,然後重新創建所有碎片。我知道我可以使用setRetainInstance爲true,但是這並沒有幫助,因爲AsyncTask在Activity被取消時仍在運行!
第二個問題是關於Loader的問題。如果下載數據並且AsyncTask完成正常,則這些項目將顯示在「列表」中。可以說數據庫中有20個項目。當用戶旋轉設備並且重新創建碎片時,加載器需要再次關聯。發生這種情況時,數據不會立即加載到列表中,而是下載的AsyncTask被啓動,因爲CWAC-Endless適配器認爲它在列表中的最後一項!
這兩個問題已經耗盡了我。我需要重新審視這一點,因爲即時消息不會在哪裏。
任何建議都可以,如果需要,我可以發佈源代碼。
編輯
確定這裏有一些更多的細節,以幫助一些建議。
我從互聯網上下載數據,每次只能返回一定數量的項目。然後我需要更多的數據(分頁)。
我決定使用一個數據庫,因爲新的Loader功能使得它非常簡單,以確保數據的加載效率和一致性,沒有任何線程問題。 如果放棄Loader方法並使用標準適配器來渲染數據是有意義的,我很樂意放棄這種方法並使用它。我只是想看看有人能夠提供一個洞察,解釋爲什麼這個解決方案如此困難。
感謝,
亞當
我有一些更多的意見,但我想知道是否有其他地方我們可以討論這個,因爲我覺得它很長 – Mimminito 2012-03-17 02:42:14
我有任何更新與裝載機和遊標的EndlessAdapter。我也卡在這裏。 – zeeshan 2013-07-13 16:11:10
@zeeshan:'EndlessAdapter'設計用於'ArrayAdapter'。我預計不會添加'Loader'支持,因爲我沒有任何場景可以在'EndlessAdapter'中使用'Loader'。如果您可以加載數據,加載數據,請不要加載數據。 'EndlessAdapter'指的是你需要調用Web服務或獲取數據的地方,在這種情況下,你並沒有很可能使用'Loader'。 – CommonsWare 2013-07-13 16:16:04