我的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:实现一种浮动选择菜单的效果
  2. Android的底部菜单
  3. android中菜单以及自定义组件的使用
  4. Android权限设置android.permission完整列表

随机推荐

  1. Android设置振铃
  2. Android(安卓)图片的加载与保存
  3. 改变Android中默认Dialog的样式
  4. android 2.2 eclipse
  5. Android开发实践 网络通信 URL、URLConne
  6. android editText 软键盘enter键图标的设
  7. Android debug.keystore的密码
  8. Android:网络框架android-async-http 1.4
  9. Android中的popWindow
  10. 【Android 应用开发】Android 开发 之 JN