22.列表对话框AlertDialog.Builder:省份选择列表

来源:互联网 发布:c语言pdf下载 编辑:程序博客网 时间:2024/06/02 21:06

目标效果

当前页面有一个提示信息和一个按钮,点击按钮后显示省份。当我们点击对应的省份后,关闭列表对话框并在页面显示一个选中省份toast信息5s。具体页面效果如下:

这里写图片描述
这里写图片描述
这里写图片描述

页面布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/LinearLayout1"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity"    android:background="@drawable/dog4" >    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="19dp"        android:layout_marginLeft="10dp"        android:text="显示简单列表对话框"        android:textAppearance="?android:attr/textAppearanceLarge" />    <Button        android:id="@+id/show"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="20dp"        android:layout_gravity="right"        android:text="显示吧" /></LinearLayout>

事件响应

package com.example.alertdialogdemo;import android.os.Build;import android.os.Bundle;import android.os.Handler;import android.annotation.SuppressLint;import android.annotation.TargetApi;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.app.DialogFragment;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.EditText;@SuppressLint("NewApi")public class MainActivity extends Activity{    EditText write=null;    Button show=null;    final int COMMON_DIALOG=1;    //创建用于显示列表的省份信息    private String[] province=new String[]{"湖南","河北","甘肃","北京","上海","黑龙江"};    @Override    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        show=(Button) findViewById(R.id.show);        //为按钮设置监听器        show.setOnClickListener(new View.OnClickListener()        {            @Override            public void onClick(View arg0)             {                showDialog(province);            }            //创建一个带有确定按钮的普通对话框            @SuppressLint            ("NewApi") private void showDialog(String[] province)            {                MyDialogFragment myDialog=new MyDialogFragment(province);                myDialog.show(getFragmentManager(), "警告");            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }/* * 普通对话框类 * 样式:带有一个普通按钮的对话框 */@SuppressLint({ "ValidFragment", "NewApi" }) class MyDialogFragment extends DialogFragment{    String[] province=null;    public MyDialogFragment(String[] inputProvience)    {        province=inputProvience;    }    @SuppressLint("NewApi") @Override    public Dialog onCreateDialog(Bundle savedInstanceState)     {        Dialog dialog=null;        //创建列表对话框对象        Builder b=new Builder(getActivity());        b.setIcon(R.drawable.ic_launcher);        b.setTitle("请选择省份");        b.setItems(province, new DialogInterface.OnClickListener()        {            /*             * 点击列表项,显示内容,关闭对话框             * (non-Javadoc)             * @see android.content.DialogInterface.OnClickListener#onClick(android.content.DialogInterface, int)             */            @Override            public void onClick(DialogInterface dialog, int choiceIndex)             {                final AlertDialog ad=new AlertDialog.Builder(MainActivity.this).setMessage(                        "您选择的是:"+(choiceIndex+1)+":"+province[choiceIndex]).show();                //线程处理                Handler handler=new Handler();                Runnable runnable=new Runnable()                {                    @Override                    public void run() {                        // 调用AlertDialog类的dismiss()或者cancel()关闭对话框                        ad.dismiss();                    }                };                //5秒后运行run方法                handler.postDelayed(runnable, 5*1000);            }        });        dialog=b.create();        return dialog;    }}}
阅读全文
0 0
原创粉丝点击