В моем приложении используются 2 одинаковых ViewPagers, которые содержат 6 изображений в каждом из 6 фрагментов.ViewPager отображает только 2 из 6 дочерних фрагментов, используя FragmentPagerAdapter
В leftViewPager в OnPageChangeListener красть используется для управленияrightViewPager.
Когда я прокручиваю 6 фрагментов leftViewpager, RightViewpager просто вращается между первыми 2 фрагментами назад и вперед!
я там понимаю, что это из-за 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=");
}
}
Я уже сделал это. См. Анимированную gif-ссылку в этом сообщении http://2imgs.com/a10f7a5083, и вы увидите ее работу, но не путем прокрутки LeftHandViewPager onPageChangeListener. Я подозреваю, что это потребует более мощного обмана! –
, так что вы хотите обрабатывать пейджер с правом салфетки с левого салфетки пейджера – koutuk
Это правильно. Никакие события касания не разрешены справа. –