首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ViewPager循环视图?

如何使用ViewPager循环视图?
EN

Stack Overflow用户
提问于 2014-12-13 15:58:21
回答 1查看 3.3K关注 0票数 2

我有一个活动,它显示一个月的日历,并允许用户在上个月/下个月左右滑动。我想使用ViewPager来实现平滑的滚动效果,但是它应该允许用户无限地左右滚动,因此无法预先设置固定的适配器。

我想知道是否可以像这样循环这些页面:最初将适配器设置为只包含3页,并显示中间页,

  • 当用户离开时,回收第3页,在当前页面之前创建一个新页面,设置新适配器,并将索引设置为1(中间)。
  • 当用户向右滑动时,回收第一页以在当前页之后创建一个新页面,设置新适配器,并将索引设置为1(中间)。

我可以用setAdapter()和setCurrentIndex()来完成这个任务吗?这会否造成不必要的后果?

EN

回答 1

Stack Overflow用户

发布于 2015-11-14 02:24:11

在支持ViewPager回收和提高性能的其他支持中,您应该使用视图而不是片段。基本上这是你要找的instantiateItem

代码语言:javascript
复制
@Override
public Object instantiateItem(ViewGroup parent, int position) {
  int viewType = getItemViewType(position);
  if (!mRecycleCacheMap.containsKey(viewType)) {
    mRecycleCacheMap.put(viewType, new RecycleCache(this, parent, viewType));
  }
  ViewHolder viewHolder = mRecycleCacheMap.get(viewType).getFreeViewHolder();
  viewHolder.mIsAttached = true;
  onBindViewHolder((VH) viewHolder, position);
  parent.addView(viewHolder.mItemView);
  if (DEBUG) {
    Log.i(TAG, String.format(Locale.US, "instantiateItem | position: %d | viewType: %d | cacheCount: %d",
        position, viewType, mRecycleCacheMap.get(viewType).mCaches.size()));
  }
  return viewHolder;
}

查看这里的示例代码,RecyclerPagerAdapter

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27460772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档