我的活动显示了一个月的日历,并允许用户左右滑动到上个月/下个月。我想使用ViewPager进行平滑的滚动效果,但它应该允许用户无限地向左/向右滚动,因此无法预先设置固定的适配器。
我想知道是否可以像这样回收页面:最初将适配器设置为仅包含3页,并显示中间页,
我可以使用setAdapter()和setCurrentIndex()吗?这会造成不良后果吗?
答案 0 :(得分:1)
在ViewPager的其他支持回收中并提高性能,您应该使用View而不是Fragment。基本上这是你正在寻找的instantiateItem
。
@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