目前本肥对 ViewPager 只有两种用法,一是当作 APP 的欢迎界面 / 引导界面,传进几个 Layout;二是传进 Fragment。
传进 Layout:
[1] 做两个 Layout,随便。这里取名 layout_1 和 layout_2。
[2] 在 Activity 声明所需要的变量与组件:
private ViewPager view_pager;
private LinkedList<View> mList = new LinkedList<>();
[3] 给 mList 增加布局:
view_pager = (ViewPager) findViewById(R.id.view_pager);
mList.add(LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout_1, null));
mList.add(LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout_2, null));
[4] 写适配器:
class ViewPagerAdapter extends PagerAdapter{
// 返回可以滑动的 View 的个数
@Override
public int getCount() {
return mList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
// 将当前视图添加到 container 中并返回当前 View 视图
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(mList.get(position));
return mList.get(position);
}
// 滑动切换的时候销毁当前的组件
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mList.get(position));
}
}
[5] 应用适配器:
// 设置适配器
view_pager.setAdapter(new ViewPagerAdapter());
传进 Fragment:
[1] 准备一个或多个 Fragment,这里取名 HomeGoodsFragment
。
[2] 在 Activity 声明所需要的变量与组件:
// 需要添加进 ViewPager 的 Fragment 数组
private SparseArray<HomeGoodsFragment> fragmentList = new SparseArray<>();
[3] 写适配器:
// ViewPager 适配器
private class HomeViewPagerAdatper extends FragmentPagerAdapter {
private HomeViewPagerAdatper(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
}
[4] 添加 Fragment 实例到 fragmentList:
// 假设我要实例化 5 个 HomeGoodsFragment
for (int i = 0; i < 5; i++) {
HomeGoodsFragment homeGoodsFragment = fragmentList.get(i);
// 实例化 homeGoodsFragment 并传递数据
if (null == homeGoodsFragment) {
homeGoodsFragment = new HomeGoodsFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("data", "这是数据");
bundle.putInt("position", i);
homeGoodsFragment.setArguments(bundle);
fragmentList.put(i, homeGoodsFragment);
}
}
[5] 应用适配器:
view_pager.setAdapter(new HomeViewPagerAdatper(getFragmentManager()));