listView 的使用
1 使用步骤
- 获取ListView 控件对象
- 准备数据源
- 准备适配器
- 适配器关联到ListView
数据源可以从服务器 网络下载而来,也可以从数据空中读取。!!!数组中的数据无法直接传递给LsitView,需要结组适配器完成Adapter。[^1]
2 适配器
2.1 适配器Adapter
适配器是数据和视图的桥梁,负责把数据的内容显示hi到视图定义的外观布局中。
2.2 适配器的种类
名称 | 说明 |
---|---|
ArrayAdapter | 简单的文字列表 |
SimpleAdapter | 简单的图文混搭列表 |
SimpleCursorAdapter | 数据源是数据库的列表 |
自定义Adapter | 最灵活的适配器适用于绝大多数情况 |
以上适配器都继承自BaseAdapter
2.3 ArrayAdapter 实现文字列表
- 获取控件
- 建立String[] 数组的数据源
- new一个ArrayAdapter 适配器
- 适配器关联到ListView
2.4 使用SimpleAdapter 实现图文混编列表
适配器工作原理
- 布局文件
- 添加ListView标签
- 编写行布局 item.xml
- 配置对于id
- Activity
- 获取listview对象
- 准备数据源List< Map >
- 将复合数据存储到简直对数据中
- 配置适配器
- 将适配器关联到ListView
2.5 自定义Adapter
实现自定义Adapter的步骤
- 继承BaseAdapter
- 实现getView 方法
- 关联ListView
- 自定义Adapter
- 添加数据集合
- 添加反射器LayoutInflater
- 实现构造器和
- 实现getView 和setter方法
- 在Activity中调用MyAdapter
- 准备适配器
- 将adapter关联到listview
3 ListView 常用事件
名称 | 说明 | true/false | 说明 |
---|---|---|---|
onItemClick | Item点击事件 | true/fasle | 消化事件,事前不会继续传递/不消化事件,事件会继续传递下去 |
onItemLongClick | Item 长按事件 | true/fasle | 消化事件,事前不会继续传递/不消化事件,事件会继续传递下去 |
如果希望长按事件后,不再触发点击事件,则应该将返回值为true
4 Selector 背景选择器
selector背景选择器
- 是drawable文件夹下的一种资源文件.xml
- 创建资源文件
- 编写Selector 文件:通常状态/点击状态
- 设置button的背景树型为Selector 背景选择器的资源的引用
- 在其中可以定义多种不同状态下的控件背景
- 常用的状态如下表
名称 | 说明 |
---|---|
android:state_pressed | 控件是否被按压 |
android:state_focused | 控件是否获得焦点 |
android:state_enabled | 控件是否可用 |
android:state_selected | 控件是否被选中 |
注意
getview方法的每次调用都需要执行两个耗时操作
- inflate 方法耗时 convertView解决。 一级优化
- findeViewById 方法耗时 ViewHoulder 解决。 二级优化
ConvertView 的原理和使用
ViewHolder 的原理和使用
————————————————————————
[1] 《 第一行代码–Android(第二版) 》郭霖
[2] <从零开始的安卓入门课程> 孙老师非要尴尬