《第一行代码》系列读书笔记
- ListView
- RecyclerView
1. ListView
-
使用:
数据源准备->适配器加载数据源->控件加载适配器
1.布局界面只需要一个ListView,设置好宽高和id就够了。2.定义一个实体类,作为ListView适配器的适配类型
3.为ListView的子项制定一个我们自定义的布局
4.创建一个适配器
5.在Activity中创建适配器对象,然后把适配器对象传递给ListView
-
提升ListView的运行效率
1.在适配器里的getView()方法中,每次都将布局重新加载一遍,在快速滑动时,容易造成界面卡顿,影响用户体验。
解决方法:利用getView()方法中的convertView参数,将之前加载好的布局进行缓存,以便之后可以进行重用。
2.在getView()中调用View的findViewByid()方法获取控件的实例,会重复获取,降低运行效率。
解决方法:新增一个内部类ViewHolder,用于对控件的实例进行缓存。
-
ListView的点击事件
ListView的每一项Item都是可以被监听的,监听器是OnItemClickListener,其中返回的参数position表示被点击的某项在整个List中的位置,从0算起。当点击ListView中的任何一个子项时,就会回调**onItemClick()**方法。
2.RecyclerView
相比于ListView,扩展性更好,能够实现横向滚动。
-
使用:
添加依赖库,记得Sync Now进行同步compile 'com.android.support:recyclerview-v7:24.2.1'
使用方法和ListView类似
1.布局界面只需要一个RecyclerView。2.定义一个实体类,作为RecyclerView适配器的适配类型
3.为RecyclerView的子项制定一个我们自定义的布局
4.创建一个适配器 适配器继承自RecyclerView.Adapter,则需要重写onCreateViewHolder()->创建ViewHolder实例,并把加载出来的布局传入到构造函数,最后将ViewHolder的实例返回。
onBindViewHolder()->用于对RecyclerView子项的数据进行赋值,会在每个子项被滚动到屏幕内的时候执行。
getItemCount()->一共有多少个子项。
5.在Activity中创建适配器对象,然后把适配器对象传递给RecyclerView
LayoutMnager用于指定RecyclerView的布局方式,LinearLayoutManager是线性布局,可以实现和ListView类似的效果。
实现横向布局
可以调用LinearLayoutManager的setOrientation()方法来设置布局的排列方式,默认是纵向排列,传入LinearLayoutManager.HORIZONTAL表示让布局横向排列。
GridLayoutManager可以用于实现网格布局,StaggeredGridLayoutManager用于是想瀑布流布局RecyclerView的点击事件
没有提供注册监听器的方法,需要给子项具体的View去注册点击事件。