当前课程知识点:Android应用开发基础 > 第三章 Android组件 > 3.4 Android适配器 > 3.4.2 实践案例-自定义适配器
本节我们通过实例来介绍自定义适配器的使用过程
下面介绍自定义Adapter的使用过程
首先创建一个应用程序
设置应用程序的名字
将上一节listview项目的activity_main.xml和
和list_item.xml两个布局文件拷贝到layout目录
设置线性布局的宽度为100dp
新增一个CheckBox组件
将文本清空
设置gravity属性为底部
设置focusable=false
设置id为checkBox
新建一个ItemBean类存储子项的各项信息
定义图片id数据int iPic
定义图片名称String strName
定义图片说明String strContent
定义图片是否被选中bChecked
右键 Generate->getter and setter
生成getter和setter方法
下面实现自定义适配器MyBaseAdapter类的功能
自定义MyBaseAdapter类继承BaseAdapter
使用ctrl+I 实现接口方法
定义上下文Context mCtx变量
定义ArrayList
以新定义的变量为参数定义构造函数
实现getCount接口返回mArrayList.size()
实现getItem接口返回mArrayList.get(i)
实现getItemId接口返回位置参数i
实现getView接口
定义并初始化mView对象
使用参数mCtx的动态加载器
将布局文件转化为View对象
定义并初始化item布局文件中对应的图像控件
初始化名称文本控件
初始化内容文本控件
初始化ChexkBox控件
初始化ItemBean对象
通过mArrayList.get(i)获取子项数据
设置图像控件的值
设置名称文本控件的值
设置内容文本控件的值
判断mItemBean对象的isbChecked是否为true
如果为true
设置CheckBox控件被选中
最后返回mView对象
把上节的三个数组复制到该主活动中
把图片资源也放入该项目的drawable文件夹下
右键Generate-LayoutCreator
定义ArrayList变量mArrayList
实现AdapterView.OnItemClickListener接口
ctrl+I 实现未实现方法
绑定ListView组件的子项选中事件
OnCreate函数中调用initData方法
实现initData方法
初始化mArrayList对象
将显示的数据对应添加到mArrayList数组
定义并初始化ItemBean对象
在for循环中
定义并初始化ItemBean对象
将图片id存储到itemBean的图片变量中
将图片名称存储到itemBean的名称变量中
将图片说明存储到itemBean的内容变量中
设置itemBean的选项框变量为true 默认选中
将itemBean对象存储到mArrayList数组中
新建MyBaseAdapter适配器并初始化
this为上下文对象
第二个参数为数据集合
将ListView组件与适配器绑定
实现OnItemClick方法
参数i代表子项序号
从0计数
定义临时字符串变量
strMsg赋值为选择了第几个子项
%d代表通配符
使用i+1赋值
如果选项框变量为true
strMsg增加CheckBox被选中
使用Toast显示信息
代码编写完成后运行程序
点击ListView子项 显示子项信息
下面介绍如何优化自定义Adapter
首先创建一个应用程序
设置应用程序的名字
本项目是在上个项目的基础上
对自定义适配器进行优化
实现getView接口 定义化mView对象
如果view为空
使用mCtx的动态加载器
将布局文件转化为View对象
选择子布局使用LayoutCreator插件
选择Create ViewHolder
自动生成ViewHolder类
定义ViewHolder类对象
初始化mViewHolder对象
使用mView.setTag将mViewHolder与mView绑定
如果view不为空
mView等于view
mViewHolder通过mView.getTag赋值
初始化ItemBean对象
通过mArrayList.get(i)获取子项数据
设置图像控件的值
设置名称文本控件的值
设置内容文本控件的值
判断mItemBean对象的isbChecked是否为true
如果为true
设置CheckBox控件被选中
这样adapter就优化完成了
其他代码均和上节课一样
运行效果也一样
这就是Android自定义适配器的全部内容
请大家按照讲课的内容完成自定义适配器的
适配器优化两个例子的代码编写
在Android的模拟器和手机中分别运行
通过实例理解自定义适配器的优化过程
-Android Studio4.1.2安装常用问题汇总2021.3.15
-1.1 Android概述
--1.1 Android Studio安装与配置-实践案例
-1.1 Android概述--作业
-1.2 Android程序
-1.2 Android程序--作业
-1.3 Android程序调试
-1.3 Android程序调试--作业
-2.1 Activity概述
-2.1 Activity概述--作业
-2.2 Activity应用
-第2章 Android视图--2.2 Activity应用
-3.1 Activity布局
-3.1 Activity布局--作业
-3.2 Android基础组件
-3.2 Android基础组件--作业
-3.3 Android中级组件
-3.3 Android中级组件--作业
-3.4 Android适配器
-3.4 Android适配器--作业
-4.1 Fragment碎片组件
-4.1 Fragment碎片组件--作业
-4.2 ViewPager翻页类组件
-4.2 ViewPager翻页类组件--作业
-讨论:fragment与activity的生命周期有哪些不同?
-5.1 Android广播概述
-5.1 Android广播概述--作业
-5.2 Android广播工作原理
-5.2 Android广播工作原理--作业
-5.3 自定义广播
-第5章 广播--5.3 自定义广播
-5.4 有序广播
--5.4有序广播
-第5章 广播--5.4 有序广播
-6.1 系统服务概述
-6.1 系统服务概述--作业
-6.2 访问系统服务
-6.2 访问系统服务--作业
-6.3 自定义服务
-第6章 Android服务--6.3 自定义服务
-6.4 多线程
--6.4 多线程
-第6章 Android服务--6.4 多线程
-7.1 Android运行权限
-7.1 Android运行权限--作业
-7.2 URL URI概述
-第7章 内容提供者ContentProvider--7.2 URL URI概述
-7.3 ContentProvider概述
-第7章 内容提供者ContentProvider--7.3 ContentProvider概述
-7.4 访问通讯录
-第7章 内容提供者ContentProvider--7.4 访问通讯录
-7.5 课后作业案例
-8.1 相机服务
--8.1 相机服务
-8.1 相机服务--作业
-8.2 音视频服务
-8.2 音视频服务--作业
-9.1 网络服务概述
-9.1 网络服务概述--作业
-9.2 网络框架
--9.2 网络框架
-9.2 网络框架--作业
-9.3 Json
--9.3 Json
-第9章 网络技术--9.3 Json
-9.4 Volley
-第9章 网络技术--9.4 Volley
-10.1 文件存储
--10.1.3 实践案例-SharedPreference文件读写
-10.1 文件存储--作业
-10.2 数据库存储
-10.2 数据库存储--作业
-第1章 实训简介以及开发环境配置
-第2章 在线音乐播放器整体设计以及服务端开发
-第3章 在线音乐播放器-客户端开发
-第4章 在线音乐播放器-完整版
-第5章 QQ聊天项目
-第6章 在线点餐系统