package com.example.andday11customdialog; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnMultiChoiceClickListener; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.provider.Settings; import android.view.View; import android.widget.SimpleAdapter; import android.widget.TextView; public class MainActivity extends Activity { private TextView show_text; private int postion;// 全局变量记录选中的位置 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); show_text = (TextView) this.findViewById(R.id.show_text); } // 简单列表对话框 public void openSimple(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("请选择颜色"); builder.setIcon(R.drawable.ic_launcher); String[] color = { "红色", "蓝色", "黄色" }; builder.setItems(color, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: show_text.setTextColor(Color.RED); break; case 1: show_text.setTextColor(Color.BLUE); break; case 2: show_text.setTextColor(Color.YELLOW); break; } } }); builder.show(); } // 单选列表对话框,注意监听方法变了 public void openSigleDialog(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("请选择字体大小"); builder.setIcon(R.drawable.ic_launcher); String[] font = { "20sp", "30sp", "40sp" }; // 注意:单选列表对话框监听方法变了,跟前面有点区别 builder.setSingleChoiceItems(font, 0, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { postion = which; } }); // 单选列表它有一个确认按钮,确认按了哪一个按钮的事件内容 builder.setPositiveButton("肯定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (postion) { case 0: show_text.setTextSize(20); break; case 1: show_text.setTextSize(30); break; case 2: show_text.setTextSize(40); break; } } }); builder.show(); } // 多选列表对话框,注意监听方法变了 public void openMultDialog(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("请选择爱好"); builder.setIcon(R.drawable.ic_launcher); final String[] hobbies = { "篮球", "游泳", "跑步" }; final boolean[] postions = new boolean[hobbies.length];// 记录选中项的状态 // 注意:多选列表对话框监听方法也变了 builder.setMultiChoiceItems(hobbies, null, new OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { postions[which] = isChecked;// 记录的位置,无论有没有选中 } }); builder.setPositiveButton("肯定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < hobbies.length; i++) { if (postions[i]) {// 循环记录的位置 sb.append(hobbies[i] + " "); } } show_text.setText(sb); } }); builder.show(); } // 带图标的列表对话框,要跟适配器搭配使用,并且监听方法是builder.setAdapter public void openAdapterList(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("系统设置"); builder.setIcon(R.drawable.ic_launcher); String[] optionSettings = { "系统设置", "蓝牙设置", "WIFI设置", "日期设置", "声音设置" }; int[] optionImage = { R.drawable.img01, R.drawable.img02, R.drawable.img03, R.drawable.img04, R.drawable.img05 }; List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); for (int i = 0; i < optionImage.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("image", optionImage[i]); map.put("name", optionSettings[i]); data.add(map); } SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.settings, new String[] { "image", "name" }, new int[] { R.id.setting_image, R.id.setting_name }); // 注意监听方法变了 builder.setAdapter(adapter, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(); switch (which) { case 0: intent.setAction(Settings.ACTION_SETTINGS); break; case 1: intent.setAction(Settings.ACTION_BLUETOOTH_SETTINGS); break; case 2: intent.setAction(Settings.ACTION_WIFI_SETTINGS); break; case 3: intent.setAction(Settings.ACTION_DATE_SETTINGS); break; case 4: intent.setAction(Settings.ACTION_SOUND_SETTINGS); break; } startActivity(intent); } }); builder.show(); } } //