2013-05-27 121 views
0

我有一個ViewPager,我填充了具有listview內部的片段。關鍵是我必須展示大量的數據,而且我需要製作頁面,所以我只需要少量的數據。頁面更改時更改片段內容,ViewPager

我的問題是,我需要調用一個asynctask來檢索頁面更改時的數據,並填充此頁面的列表視圖,我該怎麼做?我該如何更改該任務的onPostExecute中的listview?

PS:我已經使用了一個eclipse模板的標籤+滑動活動,所以即時通訊不張貼我的代碼。

+0

AsyncTask(Activity)和碎片之間的通信是你的問題? –

+0

是的,這是我的問題。 – Edgar

回答

1

我不確定自己的問題是否正確,但我想到的第一件事是我將使用AsyncTaskLoader而不是簡單的AsyncTask。從我的(有限)經驗來看,當涉及到碎片/活動生命週期/配置更改時,裝載機可以解決問題批次

Loaders guide (Android Developers)

不管你使用什麼方法來獲取數據,加載頁面A的數據後改變B頁面列表視圖的內容不應該是太大的問題:你有充足從簡單地將頁面B的數據保存到活動中(然後將頁面更改爲setCurrentItem,並將頁面更改事件攔截到setOnPageChangeListener), 轉換爲採用SQLite數據庫的更優雅的方法(btw允許您執行一些操作緩存結果,如果可能的話)。

哦,讓我們不要忘記,如果你使用的是抽象類的實現FragmentPagerAdapter你也許可以直接從一個頁面傳遞數據給對方,因爲這PagerAdapter實施

代表每一頁作爲片段,只要用戶可以返回頁面,片段就會一直保存在片段管理器中。

(只使用getItem(int)得到你需要的頁面的引用。我從來沒有嘗試過這個自己,雖然)。

希望這有助於

編輯我剛剛發現,讓在ViewPager顯示的當前片段的引用,如果你不使用FragmentPagerAdapter是棘手:如果這是你的問題的根源,信息它是如何做到可以在這裏找到:

Update data in ListFragment as part of ViewPager

Retrieve a Fragment from a ViewPager

Communication between ViewPager and current Fragment

+0

感謝您的提示,我會看看加載器指南,但是,我知道我可以用SetOnPageChangeListener做些事情,但我的問題是,我如何告訴「更改片段B上的ListView」到AsyncTask。數據必須在頁面更改時正確調用 – Edgar

+1

我想我現在已經得到了您的問題,並且我已擴展我的答案以匹配 – Rick77

+0

謝謝您!我將使用此功能。 – Edgar