android:列表对话框(11)

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();
	}
}

//
相关文章
相关标签/搜索