ViewPager的效果:可以实现多页面左右滑动。
简单分析:
①左右滑动生成的每个页面,其实是生成的每个Fragment。因此ViewPager组件的adapter控制器实例需要绑定一个fragmentmanager来管理Fragment的生成。
②类似前面学的RecycleListView,需要实现一些内部机制。ViewPager需要覆盖方法getItem(int positon)和getCount()。
③ViewPager既然是多页面滑动,就有初始页面是哪个的问题。可以通过ViewPager.setCurrentItem(int i)来指定。
④有①知道,ViewPager可以容纳Fragment。类比前面学的,ViewPager组件可以放在activity视图中。
代码实现:
①组件布局
②组件实例化
private ViewPager mViewPager; mViewPager = (ViewPager) findViewById(R.id.activity_crime_pager_view_pager);
③设置adapter
FragmentManager fm = getSupportFragmentManager();
mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) {
@NonNull
@Override
public Fragment getItem(int position) {
Crime crime = mCrimes.get(position);
return CrimeFragment.newInstance(crime.getID());
}
@Override
public int getCount() {
return mCrimes.size();
}
});
正如前面所说,设置adapter时绑定了FragmentManager 。
getItem方法:每次滑动时,根据滑动页面的位置返回特定的Fragment实例。
getCout方法:让系统预知要载入多少的页面,大于0才可以正常滑动。
④初始化页面
③中只是覆盖了滑动时会调用的方法,而初始开始ViewPager所在的activity时,初始页面默认为第一张。(显示position = 0时的fragment0对应的视图和数据)。有时需要指定初始ViewPager。
mViewPager.setCurrentItem(i);
这个方法要在③后调用才有效。



