显示选择省份的三种列表对话框-列表对话框,单选列表对话框,多选列表对话框

来源:互联网 发布:淘宝联盟网站建设 编辑:程序博客网 时间:2024/06/05 11:54

简单列表对话框

通过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.Javapackage 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>
0 0
原创粉丝点击