当前位置: 代码迷 >> Android >> 小弟我的android 第18天 - 选择菜单
  详细解决方案

小弟我的android 第18天 - 选择菜单

热度:99   发布时间:2016-04-28 07:11:53.0
我的android 第18天 - 选择菜单

?

我的android 第18天 - 选择菜单

?

?介绍:菜单是在开发中常用的一个控件,它分为选择菜单和上下文菜单,可以通过菜单设计器实现菜单的设计,也可以通过代码手动装配菜单,一个Activity只能有一个选择菜单,但是可以有多个上下文菜单,一个控制只能拥有一个上下文菜单

?

?案例:通过选择菜单和上下文菜单实现对图书的管理

??(该项目涉及三个知识点:选择菜单、上下文菜单、自定义适配器)

一、界面设计及案例分析

?

?


?

?

?

? ?二、实现流程

1、构建选择菜单

?在菜单设计器设计选择菜单
?通过代码添加选择菜单
?groupId : 组别(不会影响菜单项的排序顺序)
?itemId : 菜单项的唯一标识
?order: 菜单项的排列顺序(数值越小,排在越前面)
?title:标题
?MenuItem item = menu.add(groupId, itemId, order, title); 创建菜单项
?item.setIcon(R.drawable.icon); 设置图标
?onCreateOptionsMenu :在第一次点击Menu的时候调用,在这里进行菜单的初始化
?getMenuInflater().inflate(R.menu.book, menu);装配菜单?

2、监听选择菜单项的点击:onOptionsItemSelected :Activity方法

?

/**     * 第一次点击Menu键的时触发(在这里创建选择菜单)     */    public boolean onCreateOptionsMenu(Menumenu) {    // 把功能类似的菜单项分到同组   menu.add(0, R.id.menu_add, 0, R.string.add).setIcon(R.drawable.menu_add);    menu.add(0, R.id.menu_delete, 0, R.string.delete).setIcon(R.drawable.menu_delete);    menu.add(1, R.id.menu_good_look, 0, R.string.good_look).setIcon(R.drawable.menu_good_look);    menu.add(1, R.id.menu_not_good_look, 0, R.string.not_good_look).setIcon(R.drawable.menu_not_good_look);    // menu.setGroupEnabled(0,false);//装配菜单    getMenuInflater().inflate(R.menu.menu_book_options,menu);    return super.onCreateOptionsMenu(menu);    } /**     * 监听选择菜单的点击     */    public boolean onOptionsItemSelected(MenuItemitem) {    int itemId = item.getItemId();    switch (itemId) {case R.id.menu_add: // 添加menuEidtOrAdd(null);break;case R.id.menu_delete: // 删除optionsMenuDelete();break;case R.id.menu_good_look: // 好看case R.id.menu_not_good_look: // 不好看break;}    return super.onOptionsItemSelected(item);    }

?

? ?二、实现流程

?????? 3、在OnCreate()中装配ListView数据,实现图书列表的显示

????????? . ListView 数据初始化:ArrayList<Map>

????????? . ListView 添加适配器,装配数据

?

4、选择菜单功能实现

??

?添加图书
?自定义对话框
?实现添加图书到数据列表中
?通知适配器数据已改变,需重新刷新列表
/*** 给列表框装配数据,在Activity中显示图书列表信息*/   ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>();        for (int i = 0; i < 20; i++) {        HashMap<String, Object> map = new HashMap<String, Object>();        map.put(NAME, "5分钟突破Java "+ (i+1) +".0");        map.put(GOOG_LOOK, i%2==0);        data.add(map);}        this.data = data;        listView.setAdapter( adapter = new BookAdapter(this) );



?

?

?

下载视频代码

?

  相关解决方案