关于Android开发中 ListView 的使用【干货】

listView 的使用

1 使用步骤

  1. 获取ListView 控件对象
  2. 准备数据源
  3. 准备适配器
  4. 适配器关联到ListView

数据源可以从服务器 网络下载而来,也可以从数据空中读取。!!!数组中的数据无法直接传递给LsitView,需要结组适配器完成Adapter。[^1]

2 适配器

2.1 适配器Adapter

适配器是数据和视图的桥梁,负责把数据的内容显示hi到视图定义的外观布局中。

2.2 适配器的种类

名称说明
ArrayAdapter简单的文字列表
SimpleAdapter简单的图文混搭列表
SimpleCursorAdapter数据源是数据库的列表
自定义Adapter最灵活的适配器适用于绝大多数情况

以上适配器都继承自BaseAdapter

2.3 ArrayAdapter 实现文字列表

  1. 获取控件
  2. 建立String[] 数组的数据源
  3. new一个ArrayAdapter 适配器
  4. 适配器关联到ListView

2.4 使用SimpleAdapter 实现图文混编列表

适配器工作原理](https://img-blog.csdnimg.cn/20200520210536302.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyODE1MDQ5,size_16,color_FFFFFF,t_70)

  1. 布局文件
    • 添加ListView标签
    • 编写行布局 item.xml
      • 配置对于id
  2. Activity
  • 获取listview对象
  • 准备数据源List< Map >
    • 将复合数据存储到简直对数据中
  • 配置适配器
  • 将适配器关联到ListView

2.5 自定义Adapter

自定义Adapter工作原理
实现自定义Adapter的步骤

  1. 继承BaseAdapter
  2. 实现getView 方法
  3. 关联ListView
  • 自定义Adapter
    • 添加数据集合
    • 添加反射器LayoutInflater
    • 实现构造器和
    • 实现getView 和setter方法
  • 在Activity中调用MyAdapter
    • 准备适配器
    • 将adapter关联到listview

3 ListView 常用事件

名称说明true/false说明
onItemClickItem点击事件true/fasle消化事件,事前不会继续传递/不消化事件,事件会继续传递下去
onItemLongClickItem 长按事件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] <从零开始的安卓入门课程> 孙老师非要尴尬

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值