作业习题手持设备移动应用开发Android基础版第123章.docx
- 文档编号:20154823
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:26
- 大小:27.53KB
作业习题手持设备移动应用开发Android基础版第123章.docx
《作业习题手持设备移动应用开发Android基础版第123章.docx》由会员分享,可在线阅读,更多相关《作业习题手持设备移动应用开发Android基础版第123章.docx(26页珍藏版)》请在冰豆网上搜索。
作业习题手持设备移动应用开发Android基础版第123章
第12章高级UI组件
1.什么是Android视图组件的数据绑定方式?
答:
Android视图组件的数据绑定方式是指将数据集里的数据项与视图界面组件之间建立对应关系,当一个视图组件与某个数据项绑定后,数据项内容改变时就会自动改变视图中内容。
数据项通常是数组元素、数据库字段、ContentProvider中表格中的列等。
2.什么是Adapter?
什么是AdapterView?
两者有何关系?
答:
(1)Adapter提供了对数据项的访问,并且负责为每个数据项生成一个视图(View)对象。
Adapter是一个接口(Interface)并不能直接创建对象,程序员必须建立实现(Implements)Adapter接口的类,才能利用这个自定义类的对象来绑定数据到视图组件,但Android已经提供了一系列实现了Adapter接口的类,如:
BaseAdapter、ArrayAdapter、SimpleCursorAdapter等。
(2)AdapterView类是一个能绑定数据的视图(View)类型,是ViewGroup的子类,能被Adapter绑定的UI控件必须继承AdapterView类。
(3)Adapter(适配器)能在AdapterView对象和底层数据之间起到桥梁作用,即将数据绑定到UI界面。
3.请根据程序中注释要求在空白划线处填写代码。
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner);
m_txtView=(TextView)this.findViewById(R.id.TextView01);
m_Spinner=(Spinner)this.findViewById(R.id.Spinner01);
//新建元素类型为String的ArrayAdapter对象adapter,参数中指定该对象与
//数组m_bloods数据绑定,界面布局指定为android.R.layout.simple_spinner_item______________________________________________________________________;
/设置列表中视图组件排列为下拉式风格:
//android.R.layout.simple_spinner_dropdown_item
______________________________________________________________________;
//为m_Spinner中设置adapter对象
______________________________________________________________________;
//为Spinner对象添加选中项事件监听器对象m_SpinnerListener
______________________________________________________________________;
//将Spinner对象设置为可见
______________________________________________________________________;
}
答:
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner);
m_txtView=(TextView)this.findViewById(R.id.TextView01);
m_Spinner=(Spinner)this.findViewById(R.id.Spinner01);
//新建元素类型为String的ArrayAdapter对象adapter,参数中指定该对象与
//数组m_bloods数据绑定,界面布局指定为android.R.layout.simple_spinner_item
adapter=newArrayAdapter
android.R.layout.simple_spinner_item,m_bloods);
//调用adapter对象方法设置为
//下拉式视图资源android.R.layout.simple_spinner_dropdown_item
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//为m_Spinner中设置adapter对象
m_Spinner.setAdapter(adapter);
//为Spinner对象设置列表项选中事件监听器对象m_SpinnerListener
m_Spinner.setOnItemSelectedListener(m_SpinnerListener);
//将Spinner对象设置为可见
m_Spinner.setVisibility(View.VISIBLE);
}
5.请认真阅读下面程序后回答问题。
publicclassCompactListDemoextendsListActivity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
SimpleAdapteradapter=newSimpleAdapter(this,getData(),
R.layout.listitem,
newString[]{"title","info","img"},
newint[]{R.id.title,R.id.info,R.id.img});
setListAdapter(adapter);
}
privateList
List
Map
map.put("title","Android");
map.put("info","googleproduct");
map.put("img",R.drawable.android);
list.add(map);
returnlist;
}
}
(1)详细说明语句功能及参数含义:
SimpleAdapteradapter=newSimpleAdapter(this,getData(),
R.layout.listitem,
newString[]{"title","info","img"},
newint[]{R.id.title,R.id.info,R.id.img});
(2)逐行注释privateList
(3)如果要处理ListView中选项被选中事件,你认为应该为该对象添加什么接口对象并实现什么方法?
答:
(1)
功能:
新建SimpleAdapter类型的数据绑定适配器。
SimpleAdapter适用于将静态数据映射到定义在XML中的视图组件。
通常,指定元素类型为Map型的ArrayList作为数据源,ArrayList中每项对应列表视图中一行,也就是每个Map型元素对应一行,再指定一个包含视图组件的XML文件作为列表中行的界面布局用于显示数据,通过Map中的key将数据映射到指定的View组件。
SimpleAdapter数据绑定适配器构造方法参数说明:
SimpleAdapter(Contextcontext,
List
extendsMap >>data, intresource, String[]from, int[]to) 第1个参数: 与SimpleAdapter关联的视图组件所在的应用环境对象 第2个参数: 在列表视图组件中显示的List数据集,List中每个元素对应列表视图中一行,List元素类型为Map,每个Map元素可以由若干个键值对构成 第3个参数: 列表视图中项的视图界面布局资源标识 第4个参数: 由一个Map中全部key名称构成的字符串数组,每个Map元素对应一个列表视图项,Map中每个键值对都与列表项中一个显示数据的视图组件关联 第5个参数: 由列表视图的项中显示数据的视图组件id构成的数组,这个数组中的视图id与第4个参数数组中key名称依次对应 (2) //为列表视图获取数据集List的方法 privateList //新建一个元素类型为Map的ArrayList对象,并保存到List类型的名为list的对象中,//Map中元素的key的类型为String,value的类型为任意对象 List //新建一个HashMap对象,并保存到Map类型的名为map的对象中, //HashMap中元素的key的类型为String,value的类型为任意对象 Map //map对象中添加一个key为“title”,value为“Android”的元素 map.put("title","Android"); //map对象中添加一个key为“info”,value为“googleproduct”的元素 map.put("info","googleproduct"); //map对象中添加一个key为“img”,value为R.drawable.android的元素 map.put("img",R.drawable.android); //将map对象添加到list对象中 list.add(map); //将list对象作为返回值 returnlist; } 功能: 为列表视图获取数据集List的方法 (3)OnItemClickListener接口的onItemClick()方法。 第13章Menu 2.Android提供了哪三种常用菜单? 答: Android菜单分三种: 选项菜单(Optionsmenuandactionbar) 上下文菜单(Contextmenuandcontextualactionmode) 弹出式菜单(Popupmenu),按其用途又称子菜单 7.在建立Menu菜单项ID时常出现类似如下语句,请问其中Menu.FIRST的含义是什么? publicstaticfinalintBlue_ID=Menu.FIRST+1; publicstaticfinalintCYAN_ID=Menu.FIRST+2; publicstaticfinalintRED_ID=Menu.FIRST+3; 答: Menu类定义的菜单首项的ID值整型常量,值为1 8.在Menu编程中,经常会完成如下3个回调方法,请说明这3个方法调用时机及参数含义。 publicbooleanonCreateOptionsMenu(Menumenu) publicbooleanonOptionsItemSelected(MenuItemitem) publicbooleanonPrepareOptionsMenu(Menumenu) 答: publicbooleanonCreateOptionsMenu(Menumenu): 当前应用中按钮Menu首次按下时 publicbooleanonOptionsItemSelected(MenuItemitem): 选项菜单中有选项被选中时 publicbooleanonPrepareOptionsMenu(Menumenu): 选项菜单每次显示前 9.下面程序中menu为Menu对象,请逐个说明Menu对象链式调用方法中各个方法功能、参数含义和返回值类型。 Intenti=newIntent(Main.this,OtherActivity.class); menu.add(Menu.NONE,RED_ID,Menu.NONE,"红色"). setIcon(R.drawable.palette). setAlphabeticShortcut('R'). setIntent(i); 答: //创建显示意图对象 Intenti=newIntent(Main.this,OtherActivity.class); menu.add(Menu.NONE,RED_ID,Menu.NONE,"红色")//添加菜单项 .setIcon(R.drawable.palette)//为菜单项设置图标 .setAlphabeticShortcut('R')//为菜单项设置快捷键 .setIntent(i);//为菜单项动作设置意图对象 注: 参数含义及返回值类型请自行查询SDK文档,略。 10.请简要说明下面程序的功能。 privatebooleanapplyMenuChoice(MenuItemitem){ switch(item.getItemId()){//判断选中的菜单项ID caseBlue_ID: //根据选中的菜单项设置TextView背景色 selection.setBackgroundColor(Color.BLUE); return(true); caseCYAN_ID: selection.setBackgroundColor(Color.CYAN); return(true); caseDKGRAY_ID: selection.setBackgroundColor(Color.DKGRAY); return(true); caseGREEN_ID: selection.setBackgroundColor(Color.GREEN); return(true); caseMEGENTA_ID: selection.setBackgroundColor(Color.MAGENTA); return(true); caseRED_ID: selection.setBackgroundColor(Color.RED); return(false); caseYELLOW_ID: selection.setBackgroundColor(Color.YELLOW); return(true); } return(false); } 答: 根据得到的菜单项ID判断选中哪个菜单项,并对视图组件设置相应颜色。 11.请简要说明下面程序的功能。 publicbooleanonPrepareOptionsMenu(Menumenu){ menu.findItem(GREEN_ID).setEnabled(false); returntrue; } 答: 在选项菜单显示前将其中一项设置为禁用 12.根据注释提示在下面程序空白处完成 TextViewselection; @Override publicvoidonCreate(Bundleicicle){ super.onCreate(icicle); setContentView(R.layout.main); selection=(TextView)findViewById(R.id.selection); //为selection注册上下文菜单 _________________________________________; } 答: registerForContextMenu(selection); 21.从Android3.0开始提供了一个PopupMenu组件,用来在弹出式窗口中显示一个菜单,这个菜单与某个视图组件挂钩,下面是一个弹出式菜单程序片断,请根据注释中提示在空白划线处完成代码。 publicvoidonpopupmenu(Viewbutton){ //创建与button挂钩的PopupMenu对象pop _______________________________________; //将菜单资源basic展开到弹出式菜单对象pop中 ____________________________________________________________; //为pop设置菜单项点击监听器,并创建OnMenuItemClickListener匿名对象 _____________________________________________________________{ @Override publicbooleanonMenuItemClick(MenuItemarg0){ Toast.makeText(getApplicationContext(), arg0.getTitle(), Toast.LENGTH_LONG).show(); returnfalse; } }); //显示pop菜单 ______________________; } 答: //android: onClick="onpopupmenu"指定的单击处理方法 publicvoidonpopupmenu(Viewbutton){ //创建与Button挂钩的PopupMenu对象 pop=newPopupMenu(this,button); //将菜单资源展开到弹出式菜单对象中 pop.getMenuInflater().inflate(R.menu.basic,pop.getMenu()); //为菜单项设置监听器,并实现监听器接口对象 pop.setOnMenuItemClickListener(newOnMenuItemClickListener(){ @Override //菜单项监听方法 publicbooleanonMenuItemClick(MenuItemarg0){ //建立Toast对象并显示 Toast.makeText(getApplicationContext(), arg0.getTitle(), Toast.LENGTH_LONG).show(); returnfalse; } }); pop.show();//显示菜单 } 第14章ActionBar 1.什么是ActionBar? 它通常包含哪些区域? 答: ActionBar是一种向用户提供应用操作和导航的窗口样式。 常见形式如图所示。 在ActionBar中,从左到右分别是: (1)应用图标区(Appicon): 代表当前应用的图形徽标。 (2)视图控制区(Viewcontrol): 控制下拉菜单或选项卡视图切换 (3)操作按钮区(Actionbuttons): 常用操作按钮 (4)操作溢出区(Actionoverflow): 也称为扩展菜单按钮,点击这个按钮可以显示更多的操作选项。 4.根据注释提示在空白划线处填写程序代码。 publicbooleanonCreateOptionsMenu(Menumenu){ //将菜单资源menu填充(inflate)到menu菜单对象中 ___________________________________________________; //为menu菜单对象添加标题为“分享(动态添加)”的菜单项, //保存到MenuItem类的对象actionItem中 ___________________________________________________; //actionItem菜单项设置为ActionBar,属性为有空间时显示,且带有文本标签 ___________________________________________________; //为菜单项设置系统提供的图标ic_menu_share.ic_menu_share ___________________________________________________; return(super.onCreateOptionsMenu(menu)); } 答: //将菜单资源menu填充(inflate)到menu菜单对象中 newMenuInflater(this).inflate(R.menu.menu,menu); //为menu菜单对象添加标题为“分享(动态添加)”的菜单项, //保存到MenuItem类的对象actionItem中 MenuItemactionItem=menu.add("分享(动态添加)"); //actionItem菜单项设置为ActionBar,属性为有空间时显示,且具有文本标签 actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM |MenuItem.SHOW_AS_ACTION_WITH_TEXT); //为菜单项设置系统提供的图标ic_menu_share.ic_menu_share actionItem.setIcon(android.R.drawable.ic_menu_share);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业 习题 手持 设备 移动 应用 开发 Android 基础 123