文档章节

android:列表对话框(11)

f
 flyqilong
发布于 2016/01/23 18:05
字数 628
阅读 9
收藏 0
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();
	}
}

//


© 著作权归作者所有

f
粉丝 3
博文 93
码字总数 53900
作品 0
Android工程师
私信 提问
Android基础 - 对话框和浮动Activity

在之前的学习过程中我们已经知道,Android应用中最常用的屏幕显示开发是基于Activity的,但是,在很多情况下我们需要显示一个对话框或浮动窗体来完成一些简单的任务,比如需要让用户输入一些...

红薯
2009/07/14
8.9K
4
Android 对话框(Dialog)大全 建立你自己的对话框

Activities提供了一种方便管理的创建、保存、回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的...

无鸯
2011/12/17
2.9K
1
Android用户界面---对话框(dialogs)

对话框通常是一个显示在当前Activity之前的小窗口。它下面的Activity会失去焦点,并且对话框会接受所有的用户交互。对话框通常用于通知用户中断操作的,并且要执行与应用程序内进度直接相关的...

长平狐
2012/10/16
3.2K
0
Android基础 - 对话框和浮动Activity【转】

在之前的学习过程中我们已经知道,Android应用中最常用的屏幕显示开发是基于Activity的,但是,在很多情况下我们需要显示一个对话框或浮动窗体来完成一些简单的任务,比如需要让用户输入一些...

kevin.gan
2010/01/06
1K
0
Android基础 - 对话框和浮动Activity[转]

在之前的学习过程中我们已经知道,Android应用中最常用的屏幕显示开发是基于Activity的,但是,在很多情况下我们需要显示一个对话框或浮动窗体来完成一些简单的任务,比如需要让用户输入一些...

kevin.gan
2010/01/06
2.5K
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 判断实体类属性是否为空工具类

import org.apache.commons.lang.StringUtils;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * 判断对象是否为空 * @param obj * @return */pub......

骑羊放狼灬
17分钟前
0
0
基于nginx搭建RTMP服务器

安装nginx 下载ngnix源码 git clone https://github.com/nginx/nginx.gitgit clone https://github.com/arut/nginx-rtmp-module.git 编译安装 ./configure --add-module=../nginx-rtmp-mod......

cloudjx
30分钟前
0
0
从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路

2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台。该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部分...

迷你芊宝宝
33分钟前
0
0
5个Vue.js项目的模板

开发人员查看使用SPA,Webpack,身份验证,GraphQL,文档和测试的Vue开发人员的资源。 你准备开始一个重要的Vue项目吗?为了确保从坚实的基础开始,您可以使用模板(也就是样板,骨架,起动器...

写字的男孩儿
33分钟前
0
0
epoll 的本质是什么?

从事服务端开发,少不了要接触网络编程。epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。 epoll 很重要,但是...

编辑部的故事
37分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部