1、android1223章第12章 高级UI组件1. 什么是Android视图组件的数据绑定方式?答:Android视图组件的数据绑定方式是指将数据集里的数据项与视图界面组件之间建立对应关系,当一个视图组件与某个数据项绑定后,数据项内容改变时就会自动改变视图中内容。数据项通常是数组元素、数据库字段、ContentProvider中表格中的列等。2. 什么是Adapter?什么是AdapterView?两者有何关系?答:(1)Adapter 提供了对数据项的访问,并且负责为每个数据项生成一个视图(View)对象。Adapter 是一个接口(Interface)并不能直接创建对象,程序员必须建立实现
2、 (Implements)Adapter 接口的类,才能利用这个自定义类的对象来绑定数据到视图组件,但 Android 已经提供了一系列 实现了 Adapter 接口的类,如: BaseAdapter、ArrayAdapter、SimpleCursorAdapter 等。(2)AdapterView 类是一个能绑定数据的视图(View)类型, 是ViewGroup 的子类,能被 Adapter 绑定的 UI 控件必须继承 AdapterView 类。(3)Adapter (适配器)能在 AdapterView 对象和底层数据之间起到桥梁作用,即将数据绑定到UI界面。3. 请根据程序中注释要求在
3、空白划线处填写代码。public void onCreate(Bundle savedInstanceState) 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数据绑
4、定,界面布局指定为android.R.layout.simple_spinner_item _;/设置列表中视图组件排列为下拉式风格:/android.R.layout.simple_spinner_dropdown_item _; /为m_Spinner中设置adapter对象 _; /为Spinner对象添加选中项事件监听器对象m_SpinnerListener _; /将Spinner对象设置为可见 _; 答:public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setCon
5、tentView(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=new ArrayAdapter(this, android.R.layout.simple
6、_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.setOnItemSelect
7、edListener(m_SpinnerListener); /将Spinner对象设置为可见 m_Spinner.setVisibility(View.VISIBLE); 4. 请阅读下面程序片断后回答下列问题。 private Spinner.OnItemSelectedListener m_SpinnerListener =new Spinner.OnItemSelectedListener() public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3) m_txtView.setText(你的
8、血型是:+m_bloodsarg2); public void onNothingSelected(AdapterView arg0) ;(1)程序片断主要功能是什么?(2)public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3) 方法中参数含义是什么?答:(1)为Spinner类对象创建列表项选中事件监听接口对象,并实现其列表项选监听方法和选择消失监听方法。(2)选项选中的监听方法onItemSelected(AdapterView, View, int, long) 参数说明第1个参数:选项所在
9、的 AdapterView第2个参数: AdapterView中被点击的View组件第3个参数:Adapter中View的位置序号第4个参数:被选中项的行id 5. 请认真阅读下面程序后回答问题。public class CompactListDemo extends ListActivity Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); SimpleAdapter adapter = new SimpleAdapter(this, getData(),
10、R.layout.listitem, new String title, info, img , new int R.id.title, R.id.info, R.id.img ); setListAdapter(adapter); private ListMap getData() ListMap list = new ArrayListMap(); Map map = new HashMap(); map.put(title, Android); map.put(info, google product); map.put(img, R.drawable.android); list.ad
11、d(map); return list; (1)详细说明语句功能及参数含义: SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.listitem, new String title, info, img , new int R.id.title, R.id.info, R.id.img );(2)逐行注释private ListMap getData()方法中各语句,并说明该方法功能。(3)如果要处理ListView中选项被选中事件,你认为应该为该对象添加什么接口对象并实现什么方法?答:(1)功能:新建Sim
12、pleAdapter类型的数据绑定适配器。SimpleAdapter 适用于将静态数据映射到定义在XML中的视图组件。通常,指定元素类型为Map型的 ArrayList作为数据源, ArrayList 中每项对应列表视图中一行,也就是每个Map型元素对应一行,再指定一个包含视图组件的 XML 文件作为列表中行的界面布局用于显示数据,通过Map中的key将数据映射到指定的View组件。SimpleAdapter数据绑定适配器构造方法参数说明:SimpleAdapter(Context context, List? extends Map data, int resource, String fr
13、om, int to)第1个参数:与SimpleAdapter关联的视图组件所在的应用环境对象第2个参数:在列表视图组件中显示的List数据集,List中每个元素对应列表视图中一行,List元素类型为 Map,每个Map元素可以由若干个键值对构成第3个参数:列表视图中项的视图界面布局资源标识第4个参数:由一个Map中全部key名称构成的字符串数组,每个Map元素对应一个列表视图项,Map中每个键值对都与列表项中一个显示数据的视图组件关联第5个参数:由列表视图的项中显示数据的视图组件id构成的数组,这个数组中的视图id与第4个参数数组中key名称依次对应(2)/为列表视图获取数据集List的方法
14、private ListMap getData() /新建一个元素类型为Map的ArrayList对象,并保存到List类型的名为list的对象中,/Map中元素的key的类型为String,value的类型为任意对象 ListMap list = new ArrayListMap(); /新建一个HashMap对象,并保存到Map类型的名为map的对象中,/HashMap中元素的key的类型为String,value的类型为任意对象 Map map = new HashMap(); /map对象中添加一个key为“title”,value为“Android”的元素 map.put(title
15、, Android); /map对象中添加一个key为“info”,value为“google product”的元素 map.put(info, google product); /map对象中添加一个key为“img”,value为R.drawable.android的元素 map.put(img, R.drawable.android); /将map对象添加到list对象中 list.add(map); /将list对象作为返回值 return list;功能:为列表视图获取数据集List的方法(3)OnItemClickListener接口的onItemClick()方法。第13章 M
16、enu1. Menu 组件的主要功能是什么答:Menu(菜单)在许多应用类型中是很常见的用户界面组件,在 Activity 中使用 Menu APIs 可以向用户提供熟悉且统一的操作(action)选项。2. Android 提供了哪三种常用菜单?答:Android 菜单分三种:选项菜单( Options menu and action bar )上下文菜单( Context menu and contextual action mode )弹出式菜单( Popup menu ),按其用途又称子菜单2. 选项菜单( options menu )的主要功能有哪些?如何打开选项菜单的扩展菜单?答:
17、对于 activity 来说,选项菜单( options menu )是主要的菜单项集合,用于那些对应用有全局影响的操作功能,比如:搜索( Search )、 撰写邮件( Compose email )以及设置( Settings )等操作。在 Android 2.3 及更低版本中,可以按“Menu”物理按键打开选项菜单;在 Android 3.0 及更高版本中,选项菜单中的选项功能可以由 action bar 提供,从 Android 3.0 开始,“Menu”按钮已经不推荐使用,某些设备已经没有这个物理按键。4. 什么是上下文菜单( Context menu and contextual
18、action mode)?如何打开上下文菜单?请提供上下文菜单截图。答:上下文菜单( Context menu and contextual action mode)是一种浮动型菜单,当用户长按某个视图项目时就会出现,提供影响选中项目或相关内容的操作。5. 什么是弹出式菜单(Popup menu )?如何打开弹出式菜单?请提供弹出式菜单截图。答:弹出式菜单是显示在一个垂直列表中的菜单项,这个列表会停靠于激活这个菜单的视图组件。弹出式菜单适用于提供与特定内容相关的一连串操作,也可以向某个操作命令提供作为子菜单的操作选项。7. 在建立Menu菜单项ID时常出现类似如下语句,请问其中Menu.FIR
19、ST的含义是什么?public static final int Blue_ID = Menu.FIRST+1;public static final int CYAN_ID = Menu.FIRST+2;public static final int RED_ID = Menu.FIRST+3;答:Menu类定义的菜单首项的ID值整型常量,值为19. 下面程序中menu为Menu对象,请逐个说明Menu对象链式调用方法中各个方法功能、参数含义和返回值类型。Intent i=new Intent(Main.this,OtherActivity.class);menu.add(Menu.NONE
20、, RED_ID, Menu.NONE, 红色). setIcon(R.drawable.palette). setAlphabeticShortcut(R). setIntent(i);答:/创建显示意图对象 Intent i=new Intent(Main.this,OtherActivity.class); menu.add(Menu.NONE, RED_ID, Menu.NONE, 红色)/添加菜单项 .setIcon(R.drawable.palette)/为菜单项设置图标 .setAlphabeticShortcut(R)/为菜单项设置快捷键 .setIntent(i);/为菜单项
21、动作设置意图对象注:参数含义及返回值类型请自行查询SDK文档,略。18. 下面是某Activity中使用菜单资源创建并处理菜单项的程序片断,请根据注释提示在空白划线处填写代码。 public boolean onCreateOptionsMenu(Menu menu) / 获取Menuflater对象后链式调用展开菜单资源的方法,展开sample菜单资源. _; return true; Override public boolean onOptionsItemSelected(MenuItem item) / 用if语句判断当前菜单项id 是否是swapif( _ ) Intent i=ne
22、w Intent(this,Another.class); startActivity(i); return true; / 取得菜单项Title 后强制转换成String类型,并赋值给新定义的message 对象_; if (message != null) Toast.makeText(this, 你选择穿越回到 + message, Toast.LENGTH_SHORT) .show(); return (true); / 调用父类中同名方法并将其值作为当前方法返回值_; 答:getMenuInflater().inflate(R.menu.sample, menu);item.getI
23、temId()=R.id.swapString message = (String) (item.getTitle();return (super.onOptionsItemSelected(item);第14章 ActionBar1. 什么是ActionBar?它通常包含哪些区域?答:ActionBar 是一种向用户提供应用操作和导航的窗口样式。常见形式如图所示。在 ActionBar 中,从左到右分别是:(1)应用图标区(App icon):代表当前应用的图形徽标。(2)视图控制区(View control):控制下拉菜单或选项卡视图切换(3)操作按钮区(Action buttons):常
24、用操作按钮(4)操作溢出区(Action overflow):也称为扩展菜单按钮,点击这个按钮可以显示更多的操作选项。2. 请根据下面要求,在菜单资源文档空白划线处添加相应属性,并回答问题。(1)将id为menu_save的菜单项设置为在ActionBar中有空间时显示并带有文本标签。(2)将id为menu_ search的菜单项设置为在ActionBar中有空间时显示(不需要文本标签)。(3)id为menu_ delete的菜单项是否会出现在ActionBar中?(4)请说明android:actionLayout=layout/searchview 属性作用。(5)请说明android:i
25、con=drawable/save 属性作用。 答:(1)android:showAsAction=ifRoom|withText(2)android:showAsAction=ifRoom(3)不会,因为没有设置android:showAsAction属性,只作为OptionsMenu。(4)为ActionBar中选项(item)中设置布局,引用布局资源文件searchview.xml 。(5)为ActionBar中选项(item)中设置图标,引用绘图资源save。4. 根据注释提示在空白划线处填写程序代码。 public boolean onCreateOptionsMenu(Menu menu) /将菜单资源menu填充(inflate)到menu菜单对象中 _; /为menu菜单对象添加标题为“分享(动态添加)”的菜单项, /保存到MenuItem类的对象actionItem中 _; /actionItem菜单项设置为ActionBar,属性为有空间时显示,且带有文本标签 _; /为菜单项设置系统提供的图标ic_menu_share.ic_menu_share _; return (super.onCreateOptionsMenu(menu); 答: /将菜单资源menu填充(inflate)到menu菜单对象中 new MenuInflater
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1