2016-06-02 2 views
1

Wie kann ich vermeiden, dass ein Recyclerview neu geladen wird, wenn sich die Registerkarten ändern? Zum Beispiel habe ich eine TabLayout mit drei Tabs habe, mein ViewPager ist:Wie vermeidet man, Daten neu zu laden, wenn sich Tabs ändern?

class ViewPagerAdapter extends FragmentPagerAdapter { 

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

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        return new Tab1Fragment(); 
       case 1: 
        return new Tab2Fragment(); 
       case 2: 
        return new Tab3Fragment(); 
      } 
      return null; 
     } 

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

     @Override 
     public CharSequence getPageTitle(int position) { 
      switch (position) { 
       case 0: 
        return "tab1"; 
       case 1: 
        return "tab2"; 
       case 2: 
        return "tab3"; 
      } 
      return null; 
     } 

    } 

Im ersten, ich habe eine recyclerview, wenn ich den Tabs ändern, um den ersten und zurück, wird die Liste neu geladen. Gibt es eine Möglichkeit, dieses Nachladen zu vermeiden? Halte einfach die Daten geladen.

Antwort

6

Android hält nur ein Fragment, die auf beiden Seiten des aktuellen Fragments in einem ViewPager standardmäßig. Wenn Sie also von der dritten Registerkarte zu Ihrer ersten Registerkarte zurückkehren, wird die erste Registerkarte neu erstellt, was in Ihrem Fall passiert. Here ist die Dokumentation.

Sie müssen alle Fragmente im Speicher behalten mit viewPager.setOffscreenPageLimit(<(number of fragments in view pager) - 1>) die 2 in Ihrem Fall ist.

Natürlich, wie die Dokumente vorschlagen, sollte diese Zahl niedrig gehalten werden, besonders wenn es ein komplexes Layout ist.

+0

Arbeitete wie ein Charme! Vielen Dank! – fdam

2
yourViewPager.setOffscreenPageLimit(2); 
+0

Danke Kumpel, hat sehr gut funktioniert! – fdam

+0

Vielen Dank. –

Verwandte Themen