2016-06-02 2 views
1

탭이 바뀌면 리사이클 뷰를 다시로드하지 않으려면 어떻게해야합니까? 예를 들어, 나는 세 개의 탭이있는 TabLayout이 , 내 ViewPager은 다음과 같습니다탭이 변경되면 데이터를 다시로드하지 않으려면 어떻게해야합니까?

첫 번째에서
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; 
     } 

    } 

내가 탭을 변경하고 다시 첫 번째로, 목록이 다시로드 될 때, I는 recyclerview 있습니다. 이 재로드를 피하는 방법이 있습니까? 데이터를로드 된 상태로 유지하십시오.

답변

6

안드로이드는 기본적으로 ViewPager의 현재 조각의 양쪽에 하나의 조각을 유지합니다. 따라서 세 번째 탭에서 첫 번째 탭으로 되돌아 가면 첫 번째 탭이 다시 생성됩니다. Here은 설명서입니다.

메모리에있는 모든 조각을 viewPager.setOffscreenPageLimit(<(number of fragments in view pager) - 1>) (이 경우에는 2)으로 유지해야합니다.

물론, 문서에서 알 수 있듯이이 번호는 복잡한 레이아웃 인 경우 특히 낮게 유지되어야합니다.

+0

매력처럼 작동했습니다! 감사! – fdam

2
yourViewPager.setOffscreenPageLimit(2); 
+0

고마워, 잘 했어! – fdam

+0

고맙습니다. –

관련 문제