我的android 第20天 - 自定义适配器

实现流程

7、自定义适配器

.想操作ItemView中子控件时需要自定义适配器

.适配器常用API

.getCount:总共有多少数据,决定了getView中的position

.getView(intposition, ViewconvertView,

ViewGroupparent): 每有一个Item进入视野范围内

就会调用,一般在这里初始化Item

.convertView:可循环利用的ItemView

. parentItemView的父控件

.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、自定义适配器(getViewgetCount

2、上下文菜单

.onCreateContextMenu创建

.onContextItemSelected监听

3、选择菜单(在res\menu中设计选择菜单)

.groupIdid

.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();    }



下载视频代码

更多相关文章

  1. Android(安卓)菜单(OptionMenu)大全 建立你自己的菜单
  2. Android(安卓)菜单(Menu)控件的使用
  3. android 查看解压后的.xml文件代码(axmlprinter2)
  4. Android开发:还是Menu
  5. Android(安卓)中文API (92) —— MenuInflater
  6. Android:实现一种浮动选择菜单的效果
  7. Android中向ContactsProvider中插入大量联系人
  8. Android(安卓)菜单(OptionMenu)大全 建立你自己的菜单
  9. Android的底部菜单

随机推荐

  1. Android的源代码结构(转)
  2. Windows环境中集成Android4.x和Exclipse
  3. Android Activity 界面跳转动画(系统、自
  4. Android 官方架构组件(二)——LiveData
  5. android 开源工具库
  6. Android Gradle
  7. 【转】android开源项目---tool篇
  8. Android中Intent的用法总结
  9. 如何使用android SDK帮助文档
  10. android recyclerview 上下滑动导致点击