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

本文介绍了如何使用Android中的AlertDialog.Builder类创建不同类型的对话框,包括简单列表对话框、单选列表对话框和多选列表对话框,并提供了具体的实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


简单列表对话框

通过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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值