RecyclerView滚动控件比较复杂,总结一下用法。
比如实现一个水果滚动控件,控件中包含水果的图片和名字,点击图片后跳转到水果的介绍。需要用到以下步骤
1.在Android Studio的build.gradle文件中添加RecyclerView的依赖
2.在主布局文件activity_main中添加RecyclerView控件
3.定义一个Fruit实体类,包含水果名称和水果图片id,并定义get方法
4.为Fruit类定义一个布局fruit_item.xml,包含一个ImageView和TextView分别存放水果图片和水果名称
5.为RecyclerView定义一个适配器,新建FruitAdapter类,让这个适配器继承自RecyclerView.Adapter,并将泛型指定为FruitAdapter.ViewHolder。其中ViewHolder为FruitAdapter中定义的内部类。FruitAdapater类中包含以下的类和方法:
1)内部类ViewHolder,继承自RecyclerView.ViewHolder,在ViewHolder类的构造函数中传入一个View参数,通过view.findViewById方法获取图片ID和水果ID。
2)FruitAdapater的构造函数,构造函数的参数是要展示的数据,它的功能是把要展示的数据传给适配器,并赋给一个全局的变量,后续的操作都是在这个全局变量上进行
3)重写onCreateViewHolder(),onBindViewHolder()和getItemCount()这三个方法。onCreateViewHolder()方法用于创建ViewHolder实例,加载Fruit类的布局文件fruit_item.xml,并处理RecyclerView子项的点击事件。onBindViewHolder()方法用于对RecyclerView子项的数据进行复制,会在每个子项被滚动到屏幕内执行。getItemCount()方法用于告诉RecyclerView一共有多少子项,直接返回数据源的长度。
6.RecyclerView的准备工作做好了,下面就修改MainAcitivity加载RecyclerView控件了。分下面几步:
1)初始化所有的水果数据,可以使用List
2)通过findViewById获取RecyclerView的实例
3)创建一个线性布局管理器(LinearLayoutManager)的对象,将它设置到RecyclerView中
4)创建FruitAdapter的实例,将水果数据(1步的List)传入FruitAdapter的构造函数中
5)调用RecyclerView的setAdapter()方法加载适配器
在3)步中,除了线性布局管理器外,还有GridLayoutManager和StaggeredGridLayoutManager布局管理器,前者可以用于实现网格布局,后者用于实现瀑布流布局。StaggeredGridLayoutManager可以实现一行多个子项。