0

В моем приложении используются 2 одинаковых ViewPagers, которые содержат 6 изображений в каждом из 6 фрагментов.ViewPager отображает только 2 из 6 дочерних фрагментов, используя FragmentPagerAdapter

enter image description here В leftViewPager в OnPageChangeListener красть используется для управленияrightViewPager.

Когда я прокручиваю 6 фрагментов leftViewpager, RightViewpager просто вращается между первыми 2 фрагментами назад и вперед!

ViewPager only displays 2 out of 6 child Fragmentshas я там понимаю, что это из-за Android загрузки текущего и следующего фрагмента в ViewPager, но когда я красть rightViewpager вручную (просто проверить) все 6 фрагментов !!

Итак, вопрос: Как я могу получить все 6 фрагментов в Vp2, прокручивая Vp1 ?? Так как Hierachy Viewer показывает всего 2 фрагмента. Или мне нужен какой-то специальный обман для повторного использования/утилизации двух фрагментов?

Click link to animated gif illustrating issue

  •  // Set View pager on page changed listner 
        first_pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    
         @Override 
         public void onPageSelected(int position) { 
         //second_pager.setCurrentItem(position); //Jerky 
          Toast.makeText(MainActivity.this, 
            "Selected page position: " + position, Toast.LENGTH_SHORT).show(); 
    
         } 
    
         @Override 
         public void onPageScrolled(int position , float positionOffset , int positionOffsetPixels) { 
         if(positionOffsetPixels>0) 
         { 
         second_pager.scrollTo(positionOffsetPixels-second_width ,0); // 2/3 vers 
         //second_pager.scrollTo(positionOffsetPixels-second_width + positionOffsetPixels ,0); 
    
         } 
    
         } 
    
    
         @Override 
         public void onPageScrollStateChanged(int position) { 
    
         } 
    
        }); 
    

MyAdapter использует

public class SecondPageAdapter extends FragmentPagerAdapter { 


public SecondPageAdapter(FragmentManager fm) { 
    super(fm); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public int getCount() { 
    // Return how many Fragment's attached on View Pager 
    return 6; 
} 

@Override 
public Fragment getItem(int position) { 
    Log.i("First", "postion="+position); 
    switch (position) { 
    case 0: // Fragment # 0 - This will show FirstFragment 
     return Fragment1.init(position); 
    case 1: // Fragment # 1 - This will show SecondFragment 
     return Fragment2.init(position); 
    case 2: // Fragment # 0 - This will show FirstFragment 
     return Fragment3.init(position); 
    case 3: // Fragment # 1 - This will show SecondFragment 
     return Fragment4.init(position); 
    case 4: // Fragment # 0 - This will show FirstFragment 
     return Fragment5.init(position); 
    case 5: // Fragment # 1 - This will show SecondFragment 
     return Fragment6.init(position); 
    default:// Fragment # default - Will show FirstFragment 
     return null; 
    } 
} 


public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 



@Override 
public Parcelable saveState() { 
    // TODO Auto-generated method stub 
    return super.saveState(); 

} 

@Override 
public void notifyDataSetChanged() { 
    // TODO Auto-generated method stub 
    super.notifyDataSetChanged(); 
    Log.d("DataSetChanged", "notifyDataSetChanged="); 
} 

} 

ответ

0
@Override 
    public int getCount() { 
     return 6; 
    } 

В вашем FragmentPagerAdapter и возвращает количество страниц, которое вы хотите отобразить

+0

Я уже сделал это. См. Анимированную gif-ссылку в этом сообщении http://2imgs.com/a10f7a5083, и вы увидите ее работу, но не путем прокрутки LeftHandViewPager onPageChangeListener. Я подозреваю, что это потребует более мощного обмана! –

+0

, так что вы хотите обрабатывать пейджер с правом салфетки с левого салфетки пейджера – koutuk

+0

Это правильно. Никакие события касания не разрешены справа. –