Android 实现单选对话框

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/fengyu_xueer/article/details/61920811

项目中有一次用到了单选对话框,突然发现因为许久不用,我竟然对这样一个小小的知识点有点陌生,这还得了?正好最近打算开始写自己的博客,不为其他,只为记录自己的成长,就从这一篇开始吧!

具体实现步骤如下:
1.声明一个全局数组,作为对话框列表的内容

String[] Items = {"Java","Android","C","H5","JS"};

当然,我们也可以在xml文件中设置其列表选项:res/values目录下新建array.xml文件,文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="hobby">
        <item>Java</item>
        <item>Android</item>
        <item>C</item>
        <item>H5</item>
        <item>JS</item>
    </string-array>
</resources>

2.定义一个布局文件,内容很简单只有一个按钮,当点击按钮时弹出单选对话框。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_single_dialog"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_single"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="弹出单选对话框"/>

</LinearLayout>

3.创建一个单选列表对话框,注意此处必须要借用AlertDialog.Builder作为对话框内容的载体,主要代码如下:

private void ShowSingleDialog() {
    TempWhich = 0; //TempWhich表示选择的Item位置,默认为0
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setIcon(R.mipmap.ic_launcher); //设置图标
    builder.setTitle("请选择喜欢的开发语言:"); //设置标题
    builder.setCancelable(false); //设置是否可以点击对话框外部取消,false表示不能,true表示能

    //点击选择Item监听
    builder.setSingleChoiceItems(R.array.hobby, 0, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String hobby = getResources().getStringArray(R.array.hobby)[which];
            TempWhich = which;
            Toast.makeText(DialogActivity.this, "您选择了" + which , Toast.LENGTH_SHORT).show();
        }
    });
    //确定按钮监听
    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //此处Which一直返回-1,故需要借用TempWhich
            switch (TempWhich){
                case 0:
                    Toast.makeText(DialogActivity.this, "您选择了JAVA" , Toast.LENGTH_SHORT).show();
                    break;
                case 1:
                    Toast.makeText(DialogActivity.this, "您选择了Android" , Toast.LENGTH_SHORT).show();
                    break;
                case 2:
                    Toast.makeText(DialogActivity.this, "您选择了C" , Toast.LENGTH_SHORT).show();
                    break;
                default:
                    Toast.makeText(DialogActivity.this, "您选择了其他" , Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    });
    //取消按钮监听
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //此处添加取消按钮的点击逻辑
        }
    });

    //还可以设置一个Neutral按钮,表示中立
    builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //此处添加忽略按钮的点击逻辑
        }
    });

    builder.show();
}

4.效果图在此就不展示了,有兴趣的童鞋可以试一下。

猜你喜欢

转载自blog.csdn.net/fengyu_xueer/article/details/61920811