有一个使用-情况ViewPager我从来没见过漂亮的实现。
ViewPager
ViewPager是或多或少的静态结构。将Pages添加到右侧(添加到Model并显示它)并不难,但是,应该有一个很好用的解决方案来扩展PagerAdapter(或其某些子类),以便它可以双向扩展。
我可以想象这样的适配器接口
boolean isEmpty() boolean hasNext() boolean hasPrevious() Object getNext() Object getPrevious() Object getItem(int position) // or if using generics T getNext() T getPrevious() T getItem(int position)
与Collections Iterator相似,但是是双向的。
其中索引/位置不限于0以下,而是可以使用Integer类型的整个范围。 可能不是基于数组的实现(从0到无穷大)。
我发现了这个“hack”:动态地向viewpager添加视图和从视图中删除视图, 但是正如我之前所说,我试图使其自然运行,而不是维持3,5,…项,并强制ViewPager更改当前位置在一些扭曲的逻辑上
当前是否有足够的实施方案或有必要实施? 如果这是全新的实施方式,我愿意悬赏悬赏。
这会有所帮助吗?
public static class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public Fragment getItem(int position) { return getFragmentBasedOnPosition(position); } private Fragment getFragmentBasedOnPosition(int position) { int fragmentPos = position % 3; // Assuming you have 3 fragments switch(fragmentPos) { case 1: return Fragment1.newInstance(); case 2: return Fragment2.newInstance(); case 3: return Fragment3.newInstance(); } } }
然后,
mPager.setCurrentItem((int)(Integer.MAX_VALUE/2)); //假设mPager是您的ViewPager
mPager.setCurrentItem((int)(Integer.MAX_VALUE/2));