android中Adapter适配器说明

因为项目的需要,需要使用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中的数据,全部将其状态置为false
		for (int i = 0; i < list.size(); i++) {
			// if(isSelected.get(i))
			// {
			// count++;
			// }
			if (sba.get(i)) {
				count++;
			}
		}
		return count;
	}



CmDriveinfoActivity:继承Activity类,加载主体布局文件


关键部分

Handler消息接受与处理操作

		//实例化Handler对象,实现adapter和activity的消息传递。HandleMessage对msg进行判断解析,得到信息
		Handler mHandler = new Handler() {
			@Override
			public 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;
				}
			}
		};


主要布局文件说明:

cm_driveinfo.xml:Activity加载的布局文件
cm_driveinfo_dialog:ListView点击左侧View区域弹出关于该功能介绍的布局文件
cm_driveinfo_listview:ListView中每一项View的布局文件
cm_driveinfo_menu_dialog:全部开启/禁止,右上角menu按钮触发

详细代码参考~:
http://download.csdn.net/detail/u010881221/9642534
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值