显示选择省份的三种列表对话框-列表对话框,单选列表对话框,多选列表对话框
2015-06-07 11:32
375 查看
简单列表对话框
通过AlertDialog.Builder类的setItems方法可以创建简单列表对话框,这种对话框相当于ListView控件放在了对话框中,然后在ListView中添加若干简单的文本。setItems方法的定义如下:public Builder setItems( int itemsId, final OnClickListener listener); public Builder setItems( CharSequence[] items, final OnClickListener listener);
itemsId可以是字符串数组资源ID或者字符串数组变量,或值的方式
单选列表对话框
通过AlertDialog.Builder类的setSingleChoiceItems方法可以创建单选列表对话框`public Builder setSingleChoiceItems( int itemsId, int checkedItem, final OnClickListener listener);
//从资源文件中装载
public Builder setSingleChoiceItems( CharSequence[] items, int checkedItem,final OnClickListener listener);
//从字符串数组中装载
public Builder setSingleChoiceItems( Cursor cursor,int checkedItem,String labelColumn,final OnClickListener listener);
//从数据集中装载,数据集中某一列会作为列表对话框的数据加载到列表框中。该参数表示该列的名称(字段名称)
`public Builder setSingleChoiceItems( ListAdapter adapter, int checkedItem,final OnClickListener listener);
//从ListAdapter中装载
多选列表对话框
通过AlertDialog.Builder类的setMultiChoiceItems方法可以创建多选列表对话框`
1. public Builder setMultiChoiceItems(int itemId, boolean[] checkedItems, final OnMultiChoiceClickListener listener);
//从资源文件中装载
2. public Builder setMultiChoiceItems(Cursor cursor, String isCheckedColumn, String labelColumn ,final OnMultiChoiceClickListener listener);
//从数据集中装载
3. public Builder setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, final OnMultiChoiceClickListener listener);
//isCheckedColumn确定列表项是否被选中,“1” 表示选中,“0”表示未选中。
`
main.Java package net.blogjava.mobile; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ListView; public class Main extends Activity implements OnClickListener { private String[] provinces = new String[] { "辽宁省", "安徽省", "河北省", "福建省", "广东省", "黑龙江省" }; //列表对话框的字符串数组资源 private ButtonOnClick buttonOnClick = new ButtonOnClick(1); //单击事件类的对象实例 private ListView lv = null; //用于保存多选列表对话框中的ListView对象 private void showListDialog() //用于显示简单列表对话框 { new AlertDialog.Builder(this).setTitle("选择省份").setItems(provinces, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { **final** AlertDialog ad = new AlertDialog.Builder( Main.this).setMessage( "您已经选择了: " + which + ":" + provinces[which]) .show(); android.os.Handler hander = new android.os.Handler(); // 设置定时器,5秒后调用run方法 hander.postDelayed(new Runnable() { @Override public void run() { ad.dismiss();//调用AlertDialog类的dismiss方法,也可以写成cancel方法。ad变量要用final的,因为在隐式实现的Runnable接口的run方法中需要访问final变量 } }, 5 * 1000); } }).show(); } private void showSingleChoiceDialog()// 用于显示单选列表对话框 { new AlertDialog.Builder(this).setTitle("选择省份").setSingleChoiceItems( provinces, 1, buttonOnClick).setPositiveButton("确定", buttonOnClick).setNegativeButton("取消", buttonOnClick).show(); } @SuppressLint("NewApi") private void showMultiChoiceDialog() { AlertDialog ad = new AlertDialog.Builder(this) .setIcon(R.drawable.image).setTitle("选择省份") .setMultiChoiceItems(provinces, new boolean[] { false, true, false, true, false, false }, //第三个参数必须指定单击事件对象,不能设置为null new DialogInterface.OnMultiChoiceClickListener() { public void onClick(DialogInterface dialog, int whichButton, boolean isChecked) { } }).setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { int count = lv.getCount(); String s = "您选择了:"; for (int i = 0; i < provinces.length; i++) { if (lv.getCheckedItemPositions().get(i)) s += i + ":" + lv.getAdapter().getItem(i) + " "; } //用户至少选择了一个列表项 if (lv.getCheckedItemPositions().size() > 0) { new AlertDialog.Builder(Main.this) .setMessage(s).show(); } else { new AlertDialog.Builder(Main.this) .setMessage("您未选择任何省份").show(); } } }).setNegativeButton("取消", null).create(); lv = ad.getListView(); ad.show(); } private class ButtonOnClick implements DialogInterface.OnClickListener { private int index; public ButtonOnClick(int index) { this.index = index; } @Override public void onClick(DialogInterface dialog, int whichButton) { //whichButton表示单击的按钮索引,所有列表项的索引都是大于等于0的,然而按钮的索引都是<0的! if (whichButton >= 0) { index = whichButton; //单击的是列表项 // dialog.cancel(); } else { if (whichButton == DialogInterface.BUTTON_POSITIVE) { //单击确定按钮 new AlertDialog.Builder(Main.this).setMessage( "您已经选择了: " + index + ":" + provinces[index]).show(); } else if (whichButton == DialogInterface.BUTTON_NEGATIVE) { new AlertDialog.Builder(Main.this).setMessage("您什么都未选择.") .show(); } } } } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btnListDialog: { showListDialog(); break; } case R.id.btnSingleChoiceDialog: { showSingleChoiceDialog(); break; } case R.id.btnMultiChoiceDialog: { showMultiChoiceDialog(); break; } } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btnListDialog = (Button) findViewById(R.id.btnListDialog); Button btnSingleChoiceDialog = (Button) findViewById(R.id.btnSingleChoiceDialog); Button btnMultiChoiceDialog = (Button) findViewById(R.id.btnMultiChoiceDialog); btnListDialog.setOnClickListener(this); btnSingleChoiceDialog.setOnClickListener(this); btnMultiChoiceDialog.setOnClickListener(this); } } xml文件 main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/btnListDialog" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="显示列表对话框" /> <Button android:id="@+id/btnSingleChoiceDialog" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="显示单选列表对话框" /> <Button android:id="@+id/btnMultiChoiceDialog" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="显示多选列表对话框" /> </LinearLayout>
相关文章推荐
- MooBox 基于Mootools的对话框插件
- C#实现在前端网页弹出警告对话框(alert)的方法
- C#使用Word中的内置对话框实例
- 用JavaScript实现对话框的教程
- Asp.net 弹出对话框基类(输出alet警告框)
- boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
- 自制轻量级仿jQuery.boxy对话框插件代码
- 基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
- JS 模态对话框和非模态对话框操作技巧汇总
- jquery ui对话框实例代码
- Android中自定义对话框(Dialog)的实例代码
- asp.net静态方法弹出对话框实现思路
- JavaScript 对话框和状态栏使用说明
- Jquery实现页面加载时弹出对话框代码
- js弹出模式对话框,并接收回传值的方法
- JS给超链接加确认对话框的方法
- C++采用openfilename打开文件对话框用法实例
- js确认删除对话框效果的示例代码
- android开发教程之时间对话框核心代码
- 仿iPhone风格对话框(附件包含例子/jar包/jar包源码)