【Android初级】如何实现一个具有选择功能的对话框效果(附源码)
我们去餐厅吃饭时,服务员都会拿菜单给我们选择点什么菜。今天就分享一个具有选择功能的简易对话框,给用户展示一个选择列表。实现思路如下:
既然有选择列表,那么这个列表的内容肯定保存在某个地方
用户选择某一项后,给用户做出提示,刚才选择的是什么
该功能主要用的是 AlertDialog,源码如下:
1、主Activity(细看代码中详细的注释)
`
package com.example.memorydemo.aty;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.memorydemo.R;
public class AlertDialogDemo extends Activity {
@Override
protected void onCreate(Bundle onSavedInstance) {
    super.onCreate(onSavedInstance);
    setContentView(R.layout.alert_dialog_demo);
    Button button = findViewById(R.id.buttonAlertDialog);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new AlertDialog.Builder(AlertDialogDemo.this)
                    .setTitle("Please choose")
                    // 设置对话框的显示内容,是个内容列表,注意:这里需要传数组类型,比如 R.array 或者 String[]
                    .setItems(R.array.items_alert_dialog, new DialogInterface.OnClickListener() {
                        // 点击列表上的任一项
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            String[] items = getResources().getStringArray(R.array.items_alert_dialog);
                            new AlertDialog.Builder(AlertDialogDemo.this)
                                    // 再次弹框,向用户提示 用户刚才选择的内容
                                    .setMessage("You chose: " + items[which])
                                    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                        }
                                    }).show();
                        }
                    })
                    // 第一个对话框有个 取消 按钮
                    .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    })
                    .show();
        }
    });
}
}`
2、布局文件 alert_dialog_demo.xml
`
<TextView
        android:paddingTop="20dp"
        android:text="这是一个AlertDialog样例"
        android:layout_width="match_parent"
        android:gravity="center"
        android:layout_height="wrap_content" android:id="@+id/textView7"/>
<Button
        android:text="点击开始选择"
        android:layout_marginTop="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" android:id="@+id/buttonAlertDialog"/>
`
3、列表内容定义在 res/values/strings.xml 中:
`
...
<array name="items_alert_dialog">
    <item>成都串串</item>
    <item>重庆火锅</item>
    <item>港式餐厅</item>
</array>
`
4、效果图如下:

分享这个极为简单的功能,主要是为后面学习AlertDialog的中高级用法以及实现具备复杂选择功能的需求打下坚实的基础。
【Android初级】如何实现一个具有选择功能的对话框效果(附源码)的更多相关文章
- Android Studio 一个完整的APP实例(附源码和数据库)
		
前言: 这是我独立做的第一个APP,是一个记账本APP. This is the first APP, I've ever done on my own. It's a accountbook APP ...
 - Android仿微信朋友圈,全文收起功能,附源码
		
在众多的社交类软件中,朋友圈是必不可少的,可以与好友.同学等分享自己的日常和有意思的事情,在开发社交类App时,朋友圈发表的内容你不可能让他全部显示,全部显示的话用户体验度会非常不好,这时就要用到全文 ...
 - android tesseract-ocr实例教程(包含中文识别)(附源码)
		
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍 快过年了,博主的新应用-屏幕取词之了老花镜的编码工作也在紧锣密鼓的进行中.下面分享一下这个应用 ...
 - 急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)
		
(2016年3月更:由于后来了解到GGTalk开源即时通讯系统,因此直接采用了该资源用于项目开发,在此对作者表示由衷的感谢!) —————————————————————————————————— 人 ...
 - 一个基于jQuery写的弹窗效果(附源码)
		
最近项目中频繁遇到需要弹出窗口的功能,一直使用浏览器默认的Alert和Confirm弹窗,感觉视觉效果不是那么好,而从网上下载的话又找不到合适的,找到的话有些也是十分臃肿,有时候感觉学习配置的功夫自己 ...
 - Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)
		
http://blog.csdn.net/yanzi1225627/article/details/21294553 原文
 - Android ORC文字识别之识别身份证号等(附源码)
		
项目地址https://github.com/979451341/OrcTest 我们说说实现这个项目已实现的功能,能够截图手机界面的某一块,将这个某一块图片的Bitmap传给tess-two的代码来 ...
 - Android 音视频深入   六   使用FFmpeg播放视频(附源码下载)
		
本篇项目地址,求starhttps://github.com/979451341/Audio-and-video-learning-materials/tree/master/FFmpeg%E6%92 ...
 - Android 音视频深入  十  FFmpeg给视频加特效(附源码下载)
		
项目地址,求starhttps://github.com/979451341/Audio-and-video-learning-materials/tree/master/FFmpeg(AVfilte ...
 
随机推荐
- CentOS 7 最小化安装及优化
			
CentOS 7 最小化安装及优化 目录 CentOS 7 最小化安装及优化 一.下载镜像文件 官方网站 国内镜像源 一.VMware 配置虚拟网络 二.VMware 新建虚拟机 三.CentOS 7 ...
 - 自定义ClassLoader的使用
			
1 import java.io.ByteArrayOutputStream; 2 import java.io.File; 3 import java.io.FileInputStream; 4 i ...
 - 死磕以太坊源码分析之MPT树-上
			
死磕以太坊源码分析之MPT树-上 前缀树Trie 前缀树(又称字典树),通常来说,一个前缀树是用来存储字符串的.前缀树的每一个节点代表一个字符串(前缀).每一个节点会有多个子节点,通往不同子节点的路径 ...
 - 通过BulkLoad快速将海量数据导入到Hbase(TDH,kerberos认证)
			
一.概念 使用BlukLoad方式利用Hbase的数据信息是 按照特点格式存储在HDFS里的特性,直接在HDFS中生成持久化的Hfile数据格式文件,然后完成巨量数据快速入库的操作,配合MapRedu ...
 - 从零开始的C程序设计大作业——学生成绩管理系统
			
前言 学生成绩管理系统可以说是C语言程序设计的结课的必备大作业了.花了些时间,费了些头发肝了下,完成了两个系统,一个是控制台版本的,另一个用easyx图形库进行了优化. 先放出完成后的演示图片占个坑. ...
 - ArrayDeque API 与算法分析
			
ArrayDeque 是双端队列的动态数组实现,可以当作栈和队列来使用.作为栈时,它的效率比 Stack 更高,作为队列时,效率比 LinkedList 更高.ArrayDeque 大部分操作的时间复 ...
 - 【Redis3.0.x】NoSql 入门
			
Redis3.0.x NoSql 入门 概述 NoSQL(Not Only SQL ),即不仅仅是 SQL,泛指非关系型的数据库.NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑 ...
 - 【剑指 Offer】03.1.不修改数组找出重复的数字
			
找出数组中重复的数字. 在一个长度为 n + 1 的数组 nums 里的所有数字都在 1-n 的范围内.所以数组中至少有一个是重复的.请找出数组中任意一个重复的数字. 示例 1: 输入: [2, 3, ...
 - Educational Codeforces Round 102 (Rated for Div. 2)
			
比赛地址 A(水题) 题目链接 题目: 给出一个数组\(a\)并能进行一个操作使得数组元素更改为数组任意其他两元素之和,问是否可以让数组元素全部小于等于\(d\) 解析: 排序后判断最大值是否小于等于 ...
 - 【UML】基本介绍与类图(依赖、泛化、实现、关联、聚合、组合关系)
			
文章目录 UML基本介绍 UML图 UML类图 类图-依赖关系(Dependence) 类图-泛化关系(generalization) 类图-实现关系(Implementation) 类图-关联关系( ...