我的android 第20天 - 自定义适配器
我的android 第20天 - 自定义适配器
实现流程
7、自定义适配器
.当想操作ItemView中子控件时需要自定义适配器
.适配器常用API
.getCount:总共有多少数据,决定了getView中的position
.getView(intposition, ViewconvertView,
ViewGroupparent): 每有一个Item进入视野范围内
就会调用,一般在这里初始化Item
.convertView:可循环利用的ItemView
. parent:ItemView的父控件
.notifyDataSetChanged:刷新列表,重新初始化Item,
也就是重新调用getView
.LayoutInflater
convertView=getLayoutInflater().
inflate(R.layout.item_book, parent, false);
. @paramroot :指定布局文件根节点的父控件
. @paramattachToRoot:是否要将根节点添加到
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(安卓)菜单(OptionMenu)大全 建立你自己的菜单
- Android(安卓)菜单(Menu)控件的使用
- android 查看解压后的.xml文件代码(axmlprinter2)
- Android开发:还是Menu
- Android(安卓)中文API (92) —— MenuInflater
- Android:实现一种浮动选择菜单的效果
- Android中向ContactsProvider中插入大量联系人
- Android(安卓)菜单(OptionMenu)大全 建立你自己的菜单
- Android的底部菜单