【Android 开发】:UI控件之 AlertDialog 对话框控件的的使用(二)
2013-08-07 19:13
701 查看
在上一讲中,我们介绍了Android中对话框的简单使用:【Android 开发】:UI控件之 AlertDialog 对话框控件的的使用(一),这一讲,我们继续来讲解一下对话框的其他使用方式,主要是添加单选或者多选的列表选项。
创建一个多选或者单选列表在对话框中,就必须使用 setMultiChoiceItems() 和 setSingleChoiceItems() 方法,如果需要创建它,就调用onCreateDialog()方法即可,注意,如果用户离开或者暂停这个Acivity的时候,就会保存用户的信息。也就是说警告框不仅是警告的作用,也会存储用户信息的作用。
1. 单选按钮的实现
查看API文档 setSingleChoiceItems(),可以发现这个方法的重载。
public AlertDialog.Builder setSingleChoiceItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener)
[可以用列表选项做为对话框的内容]
参数说明
items: 参数需要显示的选项
checkedItem:参数指定哪一个选项被选中,如果是-1表示没有选项被选中
listener: 参数表示其监听的事件
public AlertDialog.Builder setSingleChoiceItems (ListAdapter adapter, int checkedItem, DialogInterface.OnClickListener listener)
[可以使用适配器,这种方式特别适合用来获得网络的一些数据]
public AlertDialog.Builder setSingleChoiceItems (int itemsId, int checkedItem, DialogInterface.OnClickListener listener)
[可以从资源文件中去获取一些选项的操作]
public AlertDialog.Builder setSingleChoiceItems (Cursor cursor, int checkedItem, String labelColumn, DialogInterface.OnClickListener listener)
[可以使用游标,也就是从数据库中去提取用户需要选择的一些信息]
2. 复选按钮的实现
复选按钮的操作,查看API文档 中的setMultiChoiceItems()方法,同样可以发现有多个重载的方法,这里就不贴出来了。
public AlertDialog.Builder setMultiChoiceItems (CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
参数说明:
items: 参数表示需要显示的选项。
checkedItems:参数表示指定哪一个选项默认是被选中的,如果设置为null,表示没有选项被选中,如果不为null,则这个数组的长度和选项内容 的长度是一样的。
listener: 参数是监听事件
3. 程序代码如下:
4. 程序执行结果:
注意:其中有一个重载的方法如下,itemsId 用来表示从资源文件中获取
public AlertDialog.Builder setMultiChoiceItems (int itemsId, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
其中第一个参数itemsId
itemsId: the resource id of an array i.e. R.array.foo 定义数组资源的文件
所以上述程序也可以这样修改使用也是可以的:
1). 在values文件夹下建立数组资源文件 arrays.xml 如下所示:
2). 修改程序代码段
创建一个多选或者单选列表在对话框中,就必须使用 setMultiChoiceItems() 和 setSingleChoiceItems() 方法,如果需要创建它,就调用onCreateDialog()方法即可,注意,如果用户离开或者暂停这个Acivity的时候,就会保存用户的信息。也就是说警告框不仅是警告的作用,也会存储用户信息的作用。
1. 单选按钮的实现
查看API文档 setSingleChoiceItems(),可以发现这个方法的重载。
public AlertDialog.Builder setSingleChoiceItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener)
[可以用列表选项做为对话框的内容]
参数说明
items: 参数需要显示的选项
checkedItem:参数指定哪一个选项被选中,如果是-1表示没有选项被选中
listener: 参数表示其监听的事件
public AlertDialog.Builder setSingleChoiceItems (ListAdapter adapter, int checkedItem, DialogInterface.OnClickListener listener)
[可以使用适配器,这种方式特别适合用来获得网络的一些数据]
public AlertDialog.Builder setSingleChoiceItems (int itemsId, int checkedItem, DialogInterface.OnClickListener listener)
[可以从资源文件中去获取一些选项的操作]
public AlertDialog.Builder setSingleChoiceItems (Cursor cursor, int checkedItem, String labelColumn, DialogInterface.OnClickListener listener)
[可以使用游标,也就是从数据库中去提取用户需要选择的一些信息]
2. 复选按钮的实现
复选按钮的操作,查看API文档 中的setMultiChoiceItems()方法,同样可以发现有多个重载的方法,这里就不贴出来了。
public AlertDialog.Builder setMultiChoiceItems (CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
参数说明:
items: 参数表示需要显示的选项。
checkedItems:参数表示指定哪一个选项默认是被选中的,如果设置为null,表示没有选项被选中,如果不为null,则这个数组的长度和选项内容 的长度是一样的。
listener: 参数是监听事件
3. 程序代码如下:
public class MainActivity extends Activity { private Button button1; private Button button2; private final CharSequence[] items = { "上海", "北京", "广州" }; private final boolean[] citySelected = new boolean[]{false, true, false}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initComponent(); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("请选择单选按钮"); builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub CharSequence select_item = items[which]; Toast.makeText(MainActivity.this, "-->" + select_item, 1).show(); dialog.dismiss(); //对话框消失 } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); } }); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("请选择多选按钮"); //第二个参数尅设置为null,表示没有选项默认被选中 builder.setMultiChoiceItems(items, citySelected, new OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // TODO Auto-generated method stub citySelected[which] = isChecked; } }); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //使用StringBuffer或者使用StringBuilder追加,中间用逗号隔开直接获取Dialog的选中的值。 StringBuilder stringBuilder = new StringBuilder(); for(int i = 0; i < citySelected.length; i++ ) { if(citySelected[i] == true) { stringBuilder.append(items[i] + ","); } } Toast.makeText(MainActivity.this, stringBuilder.toString(), 1).show(); } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } private void initComponent() { button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); } }
4. 程序执行结果:
注意:其中有一个重载的方法如下,itemsId 用来表示从资源文件中获取
public AlertDialog.Builder setMultiChoiceItems (int itemsId, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
其中第一个参数itemsId
itemsId: the resource id of an array i.e. R.array.foo 定义数组资源的文件
所以上述程序也可以这样修改使用也是可以的:
1). 在values文件夹下建立数组资源文件 arrays.xml 如下所示:
<resources> <string-array name="city"> <item>北京</item> <item>上海</item> <item>广州</item> </string-array> </resources>
2). 修改程序代码段
builder.setMultiChoiceItems(R.array.city, citySelected, new OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // TODO Auto-generated method stub citySelected[which] = isChecked; } });
相关文章推荐
- 【Android 开发】:UI控件之 AlertDialog 对话框控件的的使用(一)
- 【Android 开发】:UI控件之 Dialogs 对话框控件的的使用(三)
- 【Android 开发】:UI控件之时间和日期对话框控件的的使用(四)
- 【Android 开发】:UI控件之 TimePickerDialog 时间对话框的使用
- 【Android 开发】:UI控件之 RatingBar 评分控件的使用
- 【Android 开发】:UI控件之开关状态按钮 ToggleButton 的使用方法
- 【Android 开发】:UI控件之 Spinner 下拉列表控件的使用
- 【Android 开发】:UI控件之显示图片控件 ImageView 的使用方法
- 【Android 开发】:UI控件之 ViewStub 惰性装载控件的使用
- 【Android 开发】:UI控件之 ScrollView垂直滚动控件 和 HorizontalScrollView水平滚动控件的使用
- 在Android的UI开发中,有时为了界面美观而需要使用虚线。在这里我自己实现一个画虚线的控件。
- 【Android 开发】:UI控件之 ProgressBar 进度条的使用
- 【Android开发】消息提示框与对话框-使用AlertDialog创建对话框
- 【Android 开发】:UI控件之复选框控件 CheckBox 的使用方法
- 【Android 开发】:UI控件之 GridView 网格控件的使用
- Android开发之使用AlertDialog创建对话框,单选框和多选框
- Android开发-UI控件:PullToRefresh(ListView GridView下拉刷新)的简单使用
- 【Android 开发】:UI控件之拖动条控件 SeekBar的使用方法
- Android开发-UI控件:让AlertDialog在按钮被点击后不消失
- 【Android 开发】:UI控件之 ViewPager 多页面滑动效果控件的的使用