我的android 第20天 - 自定义适配器
来源:互联网 发布:js点击div边框变颜色 编辑:程序博客网 时间:2024/06/05 06:54
我的android 第20天 - 自定义适配器
实现流程
7、自定义适配器
. 当想操作ItemView中子控件时需要自定义适配器
. 适配器常用API
. getCount:总共有多少数据,决定了getView中的position
. getView(int position, View convertView,
ViewGroup parent) : 每有一个Item进入视野范围内
就会调用,一般在这里初始化Item
. convertView : 可循环利用的ItemView
. parent : ItemView的父控件
. notifyDataSetChanged :刷新列表,重新初始化Item,
也就是重新调用getView
.LayoutInflater
convertView= getLayoutInflater().
inflate(R.layout.item_book, parent, false);
. @param root : 指定布局文件根节点的父控件
. @param attachToRoot :是否要将根节点添加到
private class BookAdapter extends SimpleAdapter {
public BookAdapter(Context context) {
super(context, data, R.layout.item_book, new String[]{NAME}, new int[]{R.id.name});}public int getCount() {return data==null ? 0 : data.size();}/** * 每有Item进入视野范围内就会调用@param convertView : 可循环利用的ItemView */public View getView(int position, View convertView, ViewGroup parent) {/** * @param root : 指定布局文件根节点的父控件 @param attachToRoot 是否要将根节点添加到parent 默认是true) */View itemView = getLayoutInflater().inflate(R.layout.item_book, parent, false);System.out.println(position + "-item-" +itemView);System.out.println(position + "-convert-" +convertView);// 取得当前Item对应的map数据HashMap<String, Object> map = data.get(position);String nameText = map.get(NAME).toString();boolean goodLook = (Boolean) map.get(GOOG_LOOK);// 设置书名TextView nameView = (TextView) itemView.findViewById(R.id.name);nameView.setText(nameText);// 根据隐藏属性设置文字颜色nameView.setTextColor(goodLook ? Color.RED : Color.YELLOW);// 给CheckBox绑定监听CheckBox checkBox = (CheckBox) itemView.findViewById(R.id.check);checkBox.setOnCheckedChangeListener(MenusActivity1.this);// checkBox.setTag(R.id.map, tag)// 将map数据跟checkbox绑定在一起checkBox.setTag(map);return itemView;}
8、删除列表项
. data.removeAll(selectedBooks) 移去已选的图书列表项
. selectedBooks.clear(); 清空选择图书的数组标记
. adapter.notifyDataSetChanged();刷新列表
9、对列表项标记好看、不好看
关注点
1、自定义适配器(getView、getCount)
2、上下文菜单
. onCreateContextMenu 创建
. onContextItemSelected 监听
3、选择菜单(在res\menu中设计选择菜单)
. groupId 组id
. itemId 菜单项id
. order 菜单排列顺序
. setIcon 菜单图标
/** * 选择菜单:删除 */ private void optionsMenuDelete() { if (selectedBooks.isEmpty()) { Toast.makeText(this, R.string.select_book, Toast.LENGTH_SHORT).show(); return; } // 移除checkBox选择的图书 data.removeAll(selectedBooks); // 清空选中的图书的id selectedBooks.clear(); // 刷新列表 adapter.notifyDataSetChanged(); } /** * 选择菜单:好看\不好看 */ private void optionsMenuGoodLookOrNot(int itemId) { if (selectedBooks.isEmpty()) { Toast.makeText(this, R.string.select_book, Toast.LENGTH_SHORT).show(); return; } for (HashMap<String, Object> map : selectedBooks) {map.put(GOOG_LOOK, itemId == R.id.menu_good_look);} // 清除选中的图书的id selectedBooks.clear(); // 刷新列表 adapter.notifyDataSetChanged(); }
下载视频代码
- 我的android 第20天 - 自定义适配器
- 我的android 第三天 - 自定义Toast
- Android里面的自定义适配器
- android的autocompletetextview适配器 自定义
- Android第12天--适配器的扩展应用
- Android中自定义适配器的使用
- Android自定义适配器,BaseAdapter的使用方法
- Android学习 17 ->自定义适配器的学习
- Android中的listview的adapter自定义适配器
- Android实现一个简单的自定义适配器
- Android定制ListView的界面(使用继承自ArrayAdapter的自定义适配器)--《第一行代码Android》学习笔记
- Android基础-自定义适配器
- Android自定义适配器BaseAdapter
- Android自定义Adapter适配器
- Android自定义适配器
- android 自定义适配器BaseAdapter
- Android 自定义适配器
- Android:自定义适配器
- 查询 PGA 性能指标
- Mysql中更改表名和数据库中的方法
- SQL Server 修改用户密码
- 第十五周项目4-多科成绩单
- win7 64 mysqlt5.6 32 安装
- 我的android 第20天 - 自定义适配器
- Archlinux论坛
- 【转】你是想读书,还是想读完书?
- cocos2d-x 2.14 win32 项目移植到android
- 各种javascript框架
- Genesis-3D 入门教程—1.安装编辑器
- ListView在delphi中的常用用法
- 2013-12-4 17:39:50
- 利用 word2vec 训练的字向量进行中文分词