0

我有一個viewpager與5個選項卡。在viewpager中的每個片段中,我有一個列表視圖,其中填充了從服務器獲取的數據(服務器調用使用AsyncTask完成)。ViewPager與listviews和fragmentstatepageradapter

我也使用Fragmentstatepageradapter有最順利的導航可能,但似乎有東西不工作,因爲它應該當我從一個具有listview的片段導航到另一個listview。

我想知道爲什麼,因爲數據已經存儲,我希望viewpager從棧中彈出這些片段。

這裏是我的適配器:

public class TabsPagerAdapter extends FragmentStatePagerAdapter { 

    public TabsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int index) { 
     switch (index){ 
      case 0: 
       return new Fragment1(); 
      case 1: 
       return new Fragment2(); 
      case 2: 
       return new Fragment3(); 
      case 3: 
       return new Fragment4(); 
      case 4: 
       return new Fragment5(); 
     } 
     return null; 
    } 

    @Override 
    public int getCount() { 
     return 5; 
    } 
} 

一個小小的研究我見過的getItem()應該總是返回片段的新實例後,但我仍然無法保存/恢復平穩狀態。 我試過使用myViewPager.setOffscreenPageLimit(4);,它提供了更好的性能,但製表導航仍然有點滯後。

我是否必須重寫instantiateItem/destroyItem以保存片段狀態?

回答

0

問題通過解決了將ListView的layout_height參數從wrap_content更改爲match_parent。

如果將高度設置爲wrap_content,則適配器內部的getView方法將被多次調用,並且這是導致選項卡之間緩慢導航的原因。

我希望這會幫助別人,回答發現here

相關問題