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

原创 2013年12月04日 17:41:18

我的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

              convertViewgetLayoutInflater().

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

      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自定义适配器.ppt

  • 2016年08月25日 22:36
  • 2.05MB
  • 下载

android自定义适配器Demo

  • 2013年01月07日 19:26
  • 364B
  • 下载

第20天(就业班) 自定义连接池、DBCP连接池、C3P0连接池、分页

自定义连接池、DBCP连接池、C3P0连接池、分页案例demo

android中自定义适配器BaseAdapter

  • 2016年12月19日 20:09
  • 3.52MB
  • 下载

android listview系列之自定义的适配器(三)

上一篇实现了简单的定制listview的item的布局,这篇将详细描述一下怎么自定义一个listview实现自己想要的listview展示样式。 要自定义显示样式,首先需要在布局中添加listvie...

Android自定义适配器

  • 2012年12月11日 19:22
  • 835KB
  • 下载

Android中的自定义数据适配器

public class App{     private int appId;          // 应用程序id     private String appName;// 应用程序名称 ...

Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)

Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器) 2013年7月3日 简、美音乐播放器开发 第二阶段已增加功能: 1、歌词滚动显示 2、来电监听 3、音量控制 4、左右滑动切...
  • wwj_748
  • wwj_748
  • 2013年07月03日 21:28
  • 23418
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我的android 第20天 - 自定义适配器
举报原因:
原因补充:

(最多只允许输入30个字)