- 从布局文件中初始化ViewPager对象:
mViewPager = findViewById(R.id.crime_view_pager);
- 为ViewPager对象设置adapter
ViewPager 通过 adapter处理视图之间复杂的逻辑。在这里ViewPager的视图是一个个Fragment,所以用如下方式把Fragment添加到ViewPager中:
FragmentManager fragmentManager = getSupportFragmentManager();
mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) {
@Override
public Fragment getItem(int i) {
Crime crime = mCrimes.get(i);
setButtonVisibility(mViewPager.getCurrentItem());
return CrimeFragment.newInstance(crime.getId());
}
@Override
public int getCount() {
return mCrimes.size();
}
});
设置adapter的时候我们通过匿名类实现 FragmentStatePagerAdapter。需要Override两个方法:getItem(int position)
和 getCount()
.
adapter通过调用 getItem 为对应的位置上添加Fragment 视图。
当然,ViewPager 还可以相应其它的事件,可以为ViewPager 添加特定事件的Listener,例如:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
setButtonVisibility(i);
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
上面代码就为ViewPager添加了一个 OnPageChangeListner,Override对应的方法可以相应相应的事件,例如滚动页面,选中页面,或滚动状态发生变化等等。