有一个ViewPager
的用例,我从未见过它的实现。
ViewPager
或多或少是静态结构。将页面添加到右侧(附加到模型并显示它)并不难,但是,应该有一个好用的解决方案来扩展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)
类似于集合html" target="_blank">迭代器,但都是定向的。
其中索引/位置不受0的限制,但可以使用整型的整个范围
实现可能不基于数组(从0到无限)。
我发现了这个“黑客”:动态地向viewpager添加和删除视图
但正如我前面所说的,我试图让它自然工作,而不是保持3,5,。。。项目并强制ViewPager根据某些扭曲的逻辑更改当前位置
目前是否有足够的实施或是否有必要实施
如果答案是一个全新的实现,我愿意悬赏。
使用负位置值与ViewPager使用的自然顺序相去甚远,根本不是适配器的问题。请在Android SDK的支持包源中查看ViewPager的源代码。例如,这里有一个setMONtItem内部私有实现:
void setCurrentItemInternal(int item, boolean smoothScroll, boolean always, int velocity) {
if (mAdapter == null || mAdapter.getCount() <= 0) {
setScrollingCacheEnabled(false);
return;
}
if (!always && mCurItem == item && mItems.size() != 0) {
setScrollingCacheEnabled(false);
return;
}
if (item < 0) {
item = 0;
} else if (item >= mAdapter.getCount()) {
item = mAdapter.getCount() - 1;
}
final int pageLimit = mOffscreenPageLimit;
if (item > (mCurItem + pageLimit) || item < (mCurItem - pageLimit)) {
// We are doing a jump by more than one page. To avoid
// glitches, we want to keep all current pages in the view
// until the scroll ends.
for (int i=0; i<mItems.size(); i++) {
mItems.get(i).scrolling = true;
}
}
final boolean dispatchSelected = mCurItem != item;
populate(item);
scrollToItem(item, smoothScroll, velocity, dispatchSelected);
}
如您所见,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)(整数最大值/2))
//假设mPager是您的ViewPager
问题内容: 有一个使用-情况我从来没见过漂亮的实现。 是或多或少的静态结构。将Pages添加到右侧(添加到Model并显示它)并不难,但是,应该有一个很好用的解决方案来扩展PagerAdapter(或其某些子类),以便它可以双向扩展。 我可以想象这样的适配器接口 与Collections Iterator相似,但是是双向的。 其中索引/位置不限于0以下,而是可以使用Integer类型的整个范围。
问题内容: 如Google所记录,Gallery类在API级别16中已弃用。不再支持此小部件。其他水平滚动小部件包括支持库中的HorizontalScrollView和ViewPager。因此,我使用ViewPager作为Gallery类的替代方法。 我的目标是最终实现 带有文本描述 的 无限滚动图像ViewPager 。我使用以下代码实现了具有描述每个图像的文本的图像ViewPager,但是
本文向大家介绍Android ViewPager无限循环实现底部小圆点动态滑动,包括了Android ViewPager无限循环实现底部小圆点动态滑动的使用技巧和注意事项,需要的朋友参考一下 页面拖动到最后一页 再向下滑动回复到 第一页,第一页向前滑动回到 最后一页 同时,底部红色小圆点随着页面的滑动距离比例随时改变位置 布局: 其中red_circle是用shape绘制的红色小圆点 最后的Lin
本文向大家介绍android ViewPager实现自动无限轮播和下方向导圆点,包括了android ViewPager实现自动无限轮播和下方向导圆点的使用技巧和注意事项,需要的朋友参考一下 一、布局 小圆点形状的生成shape.xml文件 使用空心还是实心的把对应的注释去掉就可以了. 轮播的ViewPager和向导圆点的 布局文件XML 二,代码 左右轮播的ViewPager的Adapter 添
本文向大家介绍Android简单实现无限滚动自动滚动的ViewPager,包括了Android简单实现无限滚动自动滚动的ViewPager的使用技巧和注意事项,需要的朋友参考一下 经常我们会在应用中看到一个可以自动滚动,并且无限滚动的一个ViewPager,百度谷歌上面也有很多关于这方面的教程,但是感觉都略显麻烦,而且封装的都不是很彻底。所以试着封装一个比较好用的ViewPager 效果如下: 简
我想禁用刷卡,但仅限于右侧。我在这个答案中找到了一个有效的解决方案。不幸的是,这复制了整个源代码以实现目标。有没有只继承现有类而不复制的方法?