2015-07-03 18 views
0

我在我的應用程序中設置了選項卡。我正在使用列表視圖片段,每個片段都會調用下拉數據。片段頁面適配器 - 只能調用Get Item一次

類似以下內容:

public Fragment getItem(int position) { 
      switch (position) { 
      case 0: 
       return FirstFragment.newInstance(); 
      case 1: 
       return FirstFragment.newInstance(); 
      case 2: 
       return SecondFragment.newInstance(); 
      default: 
       return null; 
      } 
     } 

它的工作很好,但我不希望呼叫發生的每一個標籤被訪問時,僅在第一次。

這樣做的正確方法是什麼?

+0

你在使用ViewPager嗎? – Blackbelt

+0

是的,它默認存在於我的activity_main.xml – aherrick

+2

中,總是保留一個片段offscreen。你可以用setOffscreenPageLimit – Blackbelt

回答

1

您可以隨時在您的構造函數中的某處實例化這些片段,然後在getView(...)中傳遞對它的引用。

這裏有一個例證:

public class YourPagerAdapter extends FragmentPagerAdapter { 

    YourFragment fragment1, fragment2, fragment3; 

    public YourPagerAdapter() { 
     fragment1 = YourFragment.newInstance(); 
     fragment2 = YourFragment.newInstance(); 
     fragment3 = YourFragment.newInstance(); 
     ... 
    } 

    public Fragment getItem(int position) { 
     switch (position) { 
     case 0: 
      return fragment1; 
     case 1: 
      return fragment2; 
     case 2: 
      return fragment3; 
     default: 
      return null; 
     } 
    } 

    ... 

} 

這樣一來,你的片段將只得到了實例化一次 - 當你創建你的適配器。

更好的是,將這些片段包裝在List中。這樣你可以簡化你的getItem(int position)return mFragments.get(position)

+0

完全合理,謝謝! – aherrick