2013-06-03 80 views
0

我有一個ViewPager與四個片段。用戶填寫第一個片段的數據,點擊按鈕,數據轉到sqlite。其他三個片段然後用於以各種方式在sqlite數據庫中顯示數據。第一個只是在列表視圖中列出它們。問題是數據沒有得到更新的片段,直到我到達最後一個片段屏幕換回。所以我想這是可能是與setOffscreenPageLimit我在我的ViewPager的OnCreate設置爲notifyDataSetChanged性能差與viewpager片段

mypager.setOffscreenPageLimit(1); 

,似乎沒有任何影響。 後來我想重寫使用onPageSelected,並在那裏加入

mypager.notifyDataSetChanged(); 

這工作,但是這些片段之間的揮筆遲緩。如果我再次將它取出並輕掃這最後一個片段,然後片段更新,它非常快。 任何人有任何想法?

回答

0

我不熟悉ViewPager,但是,每次調用notifyDataSetChanged()時,尋呼機都會從數據庫中獲取數據。

而不是每次頁面更改時更新遊標,我會建議創建一個函數,以檢查數據集是否實際更改之前調用notifyDataSetChanged()。這樣,當用戶改變第1頁上的數據時,只會導致性能下降,但從那裏開始,所有的頁面刷新都將是即時的,直到數據再次更改。

希望這可以幫助你的問題。

0

爲了順利地滑動片段,請在延遲時間內(例如150-250ms)在onCreateView()中運行長時間執行的代碼。

轉換動畫執行的是UI線程,所以如果在同一時間運行其他任何花費大量時間的東西(例如SQLite數據庫訪問),轉換的平滑性將受到影響。

YourFragments extends Fragment { 

... 
Handler mHanlder = new Handler(); 

    @Override 
    public void onCreate(...){ 

    ... 
    mHandler.postDelayed(someRunnable, 250); 
    ... 
    } 

} 
+0

不知道這是做到這一點的正確方法,需要多調查一下。有趣的是,如果你使用listview查看片段,然後回到片段,它會非常快速地更新,這就是我想要的,只是第一次刷新:) – daemonza