在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择。这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式。下面我们简单模拟一个皇帝选妃的选择确定对话框(多选),如下图:
Layout(仅布置一个按钮)界面代码:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.multichoice.MainActivity"> <Button android:text="多项选择" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/button" android:onClick="show" /> </RelativeLayout>
Java实现代码:
import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { //实例化存储用户最终选择的集合 List<String> choose = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void show(View v){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("皇上选妃了"); final String[] names={"西施","王昭君","貂蝉","杨玉环"}; choose.clear();//每次的点击事件前需要清空集合内的元素 //设置Dialog为多选框,且无默认选项(null) builder.setMultiChoiceItems(names, null, new DialogInterface.OnMultiChoiceClickListener() { @Override //设置点击事件:如果选中则添加进choose,如果取消或者未选择则移出choose public void onClick(DialogInterface dialog, int which, boolean isChecked) { if(isChecked){ choose.add(names[which]); }else{ choose.remove(names[which]); } } }); //设置正面按钮以及点击事件(土司显示choose内容) builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,choose.toString()+"是您的妃子了",Toast.LENGTH_SHORT).show(); } }); builder.show();//显示Dialog对话框 } }