如何在java中创建循环视图pager2(无限滚动)?例如,我想从第1页到第100页,同时向左滑动,不要停下来。
myViewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
Log.d(CPAct,"onPageScrolled "+position);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
Log.d(CPAct,"onPageSelected Position: "+position);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
Log.d(CPAct,"onPageScrollStateChanged state: "+state);
if (state == ViewPager2.SCROLL_STATE_IDLE) {
if (myViewPager2.getCurrentItem() == 0)
myViewPager2.setCurrentItem(99, false);
else if (myViewPager2.getCurrentItem() == 99)
myViewPager2.setCurrentItem(0, false);
}
在设置适配器之后,我在initview()中尝试了上面的代码,但它不能正常工作。例如,当我从第2页向左滑动时,它直接转到最后一页,跳过第1页;当我向右滑动以转到最后一页,它直接转到第1页时,也会发生同样的情况。我只想无限滚动而不跳过任何页面。
1条答案
按热度按时间f45qwnt81#
你应该发帖
Adapter
s代码,在那里你应该返回Integer.MAX_VALUE
在getCount
并为图纸列表项引入适当的获取模型-例如,如果您有ArrayList data
然后使用data.get(position % data.getItemCount())
在getItem
(因为数组的大小是固定的,但您正在通知适配器有非常多/无限多的项)你现在的计划不太好,因为你在操纵
View
对于舒尔来说,这迟早会增加一些视觉上的小问题,而且效率也不是很高