android中Adapter适配器说明
来源:互联网 发布:unity3d游戏开发基础 编辑:程序博客网 时间:2024/05/16 05:01
因为项目的需要,需要使用ListView加载自定义的布局,因此自己定义Adapter继承BaseAdapter,在Adapter之中做了View的响应处理操作,并且能够将Adapter之中相关的View的概况通过Handler发送给Activity实现消息通信。
整个实现的预览图如图所示:ps这里是模拟车辆状态的一些说明
主要实现的一些功能:
1/ 统计开启功能个数,使用Handler
2/ 一键开启/关闭所有功能
3/ 每一个View实现响应功能:view左侧区域弹出关于此功能介绍,view右侧区域实现开启/关闭该功能
以下是代码说明:
DriveinfoAdapter:继承自BaseAdapter
构造函数:
public DriveinfoAdapter(Context mContext, ArrayList<String> mList, Handler mhandler)
mContext::实现Activity对象对应Context的一系列引用
mList:实现每个View加载的文字说明
mhandler:建立Handler-Message之间的信息通信
关键说明:
1/ SparseBooleanArray:用来记录每个View中开启/关闭状态,亦可以使用HashMap<Integer,Boolean>,不过推荐使用SparseBooleanArray,比HashMap要高效,至于怎么高效,后面的文章会有所说明
// 在构造函数中,全部将其状态置为false,进行初始化for (int i = 0; i < list.size(); i++) {// isSelected.put(i, false);sba.put(i, false);}
public static SparseBooleanArray getSba() {return sba;}public static void setSba(SparseBooleanArray sba) {DriveinfoAdapter.sba = sba;}
2/ ViewHolder:创建该类主要是为了优化ListView,使得View刷新过程中能够充分加载缓存的View,进而使得View的加载刷新效果提升
public class ViewHolder {/**行车功能的各项图标*/private ImageView drive_func_image;/**行车功能的名称*/private TextView function_menu;/**左侧布局,设置监听事件实现弹出对话框对行车功能进行解释说明*/private LinearLayout left_note;/**右侧布局,点击监听事件实现开关的开启关闭*/private LinearLayout right_toggle;/**右侧开关,显示当前功能项的开启或者关闭状态*/private ToggleButton right_turn;/**文字显示功能项的开启或者关闭:“已开启”或者“已关闭”*/private TextView function_state;}
3/ Handler:先进行Message的参数配置,message.arg1为统计开启功能个数,其值为funcOpenCount()返回值,message.obj为开启/关闭每个功能发送的字符串
public void Message(String send) {Message message = new Message();message.what = 1;message.arg1 = funcOpenCount();message.obj = send;handler.sendMessage(message);}
/** * 记录开启的功能个数 * @return */public int funcOpenCount() {int count = 0;// 将Map中的数据,全部将其状态置为falsefor (int i = 0; i < list.size(); i++) {// if(isSelected.get(i))// {// count++;// }if (sba.get(i)) {count++;}}return count;}
关键部分
Handler消息接受与处理操作
//实例化Handler对象,实现adapter和activity的消息传递。HandleMessage对msg进行判断解析,得到信息Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 1://设置已开启功能的个数note.setText("已开启 "+msg.arg1+ "个功能");//获取待获取的指令信息String ss = (String) msg.obj;if (D)Log.d(TAG + ":handler ->ss", ss);break;default:break;}}};
- android中Adapter适配器说明
- Android中Adapter数据适配器
- Android中自定义数据适配器Adapter
- Android中适配器Adapter的使用
- Android Adapter适配器
- Android适配器Adapter学习
- Android适配器Adapter学习
- android适配器Adapter
- Android Adapter(适配器)优化
- Android适配器Adapter学习
- Android adapter 数据适配器
- Android适配器Adapter学习
- Android基础-适配器Adapter
- Android之Adapter(适配器)
- Android自定义Adapter适配器
- Android Adapter适配器
- Android常用适配器Adapter
- android适配器Adapter
- 程序的启动页设计
- 写点什么
- java list往里面加map
- 解析、生成JSON格式数据
- Mac 上使用 andorid studio 小记
- android中Adapter适配器说明
- 【JavaScript】BootStrip DatetimePicker 错误Error this.defaultTimeZone=(newDate()).toString().split("(")[
- 大数据系列修炼-Scala课程63
- 取文本文件第二列数的C程序
- 安卓自定义控件之item高度不同的viewpager
- android反编译及再次打包
- C语言--职工信息管理系统(含论文)
- 常见三维重建算法及其实现(含源码下载链接)
- 前端优化-渐进式图片的制作