ViewPager 里面存放一个界面的UI,很常见。今天我分享一下我使用方式和思考思路。(这里主讲第二种,第一种网上一大堆。后续会做第一种代码的上传)
思考:
1.ViewPager 是一个控件。需求是要界面来填充。但 ViewPager 可以加载条目数据。所以ViewPager 加载的数据我通过一个集合来维护。
2.结合的泛型又该使用什么呢?这个没有绝对的。我是用过的Fragment,当然还有一种方式。用一个普通类来代表界面。哈哈,想不到吧。其实一说就明白。就是一个普通的java类 作为基类。你需要的界面都去继承这个基类。这个基类有着抽象的初始化View 和 Data 方法。
话不多说。看一眼代码您就豁然开朗啦!2333~~~
ViewPager数据集合:
arrayList = new ArrayList<>();
arrayList.add(new OnePagerCaiDetail(this));
arrayList.add( new TwoPagerCaiDetail(this));
arrayList.add( new ThreePagerCaiDetail(this));
ViewPager的instantiateItem:
BasePager basePager = arrayList.get(position);
return basePager.mRootView;
不懂的变量,别着急,往下看↓
BasePager: 数据集合的泛型。
public abstract class BasePager {
public Activity mActivity ;
public View mRootView ;
public BasePager(Activity mActivity) {
this.mActivity = mActivity;
mRootView = initView();
}
public abstract View initView();
public abstract void initData();
}
哈哈,懂了吧。2333~
最后写一下,子类
public class OnePagerCaiDetail extends BasePager {
public OnePagerCaiDetail(Activity mActivity) {
super(mActivity);
}
@Override
public View initView() {
View view = View.inflate(mActivity, R.layout.pager_onepager, null);
// 这里想怎么写就怎么写
return view;
}
@Override
public void initData() {
}
}