ViewPager与TabLayout
ViewPager介绍
ViewPager是一个视图的管理器 , 可以根据自己的想法与上期写到的Fragment 发生各种的改变,可以做成轮播图的形式也可以做成卡片的形式
ViewPager适配器
public class ViewPagerAdapter extends PagerAdapter {
private Context context;
private List<String> mDate;
public ViewPagerAdapter(Context context, List<String> mDate) {
this.context = context;
this.mDate = mDate;
}
//创建一个页面
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
//加载布局
View inflate = View.inflate(context, R.layout.vp_layout, null);
//给空间赋值
ImageView imageView = inflate.findViewById(R.id.vp_tv_id);
Glide.with(context).load(mDate.get(position)).into(imageView);
//添加布局
container.addView(inflate);
//返回布局
return inflate;
}
//销毁一个页面
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
//有几个界面
@Override
public int getCount() {
return mDate.size();
}
//判断一个界面是否与instantiateItem方法一致
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view == o;
}
}
这是一个简单的ViewPager的适配器 只可以用于显示文字 或者图片 需要一个String类型的集合或者是一个image类型的集合
接下来介绍一个可以使用Fragment的ViewPager的适配器
ViewPager使用Fragment适配器
vpShow.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
});
这个方法需要一个Fragment的集合
ViewPager与TabLayout与Fragment的适配器
public class MyTabOrPagerListener extends FragmentPagerAdapter {
private ArrayList<OneFragment> oneFragments;
private List<String> list;
public MyTabOrPagerListener(FragmentManager fm, ArrayList<OneFragment> oneFragments, List<String> list) {
super(fm);
this.oneFragments = oneFragments;
this.list = list;
}
@Override
public Fragment getItem(int i) {
return oneFragments.get(i);
}
@Override
public int getCount() {
return oneFragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return list.get(position);
}
}
这个方法需要一个TabLayout的一个集合 该集合应该是String类型