我有一个包含项目列表的视图。当我点击特定的listitem时,它会在新活动(和新片段)中显示该特定对象的详细信息。一切正常。
现在我想添加一个功能,用户可以从选中的详细活动显示项目滑动到下一个/上一个项目,这样他就不必返回列表并选择其他项目了。我尝试使用ViewPager和FragmentStatePagerAdapter,它的工作原理非常好。
我的Activity.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exercise);
// Instantiate a ViewPager and a PagerAdapter.
mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
...
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// pos is the position of the object in the list
Fragment fragment = ExerciseFragment.newInstance(exercisesArray, pos+position);
return fragment;
}
@Override
public int getCount() {
return exercisesArray.size();
}
}
我的问题:
ViewPager是否符合我的意图?用户一直刷到下一个项目,就会实例化一个新的片段。该列表可以包含大约100个项目......所以可能创建了100个片段?这可能是个问题吗?
如果选择并滑动第一个项目,我的实现只能正常工作。例如:我在列表中有5个项目,并且单击了第一个项目。现在我可以滑到第二项,第三项,再到第二项。但是如果用户点击列表中的第三项,我就不能向左滑动到第二项和第一项!有人有想法吗?
非常感谢!
答案 0 :(得分:1)
您不需要在viewpager中预先加载所有片段,以决定要预先加载的片段数量限制,使用viewPager.setOffscreenPageLimit(yourDesiredIntegerValue);
有关详情,see this
Ñ
注意:您无法将此限制设置为零,但即使您尝试设置此限制,viewpager也会忽略它并将此限制设置为1(默认值)。
关于第二个问题,请将您的活动保留在后台,当您的用户返回时,正常的流程将会跟进。就这么简单。