viewpager2 是对RecyclerView 的封装(所以viewpager2 自带懒加载方案),相对于viewpager,在实际项目中,更推荐使用viewpager2 。
实现效果
目前来说跟viewpager一毛一样
(1)创建viewpager2
在activity_main.xml
中,更改为LinearLayout布局,再创建viewpager2布局。
如果找不到viewpager2,则需要添加依赖:
(2)构建viewPage2专属adapter
viewPage的显示需要适配别的数据,相当于一个容器,在容器中显示什么数据需要用户在使用的时候去适配。
在下图中,先是通过find创建viewPage2对象,然后用.setAdapter
设置适配器。
Adapter类实例化了一个对象,并把这个对象作为适配器设置的传入参数,如下图:
接下来就是要定义一个Adapter类,这个类专门用于适配viewPage2
这个Adapter类要继承于RecyclerView.Adapter
,并实现其里面的全部方法:(alt+enter选择继承)
实现如下图的方法:
(3)定义要适配的界面
创建一个新的布局
如下图:
当前UI框架如下图:
其实现在ViewPager已经实现了左滑右滑,只是要对Adapter进行操作。
定义一个内部类去封装RecyclerView.ViewHolder返回的数据,这个内部类为ViewPagerViewHolder,将要替换RecyclerView.ViewHolder
传入泛型
按住ctrl点进Adapter看看,发现是拓展自ViewHolder的一个泛型,就是传入的参数要是ViewHolder的一个泛型。
正是上面创建的内部类ViewPagerViewHolder。更改为传入泛型后,报错了,更改掉即可。
至此,adpter雏形就完成了。
(4)解析界面
解析要适配的xml
再解析xml里面的具体内容,分别是Layout和Textview.
(5)绑定不同的页面数据实现左右切换
绑定内容
实现绑定
数据怎么变化,未来可以使用架构MVP,MVM,MVC,这些架构有专门传递数据的值。
具体细节在代码中体现
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);