我们去餐厅吃饭时,服务员都会拿菜单给我们选择点什么菜。今天就分享一个具有选择功能的简易对话框,给用户展示一个选择列表。实现思路如下:

  1. 既然有选择列表,那么这个列表的内容肯定保存在某个地方

  2. 用户选择某一项后,给用户做出提示,刚才选择的是什么

该功能主要用的是 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初级】如何实现一个具有选择功能的对话框效果(附源码)的更多相关文章

  1. Android Studio 一个完整的APP实例(附源码和数据库)

    前言: 这是我独立做的第一个APP,是一个记账本APP. This is the first APP, I've ever done on my own. It's a accountbook APP ...

  2. Android仿微信朋友圈,全文收起功能,附源码

    在众多的社交类软件中,朋友圈是必不可少的,可以与好友.同学等分享自己的日常和有意思的事情,在开发社交类App时,朋友圈发表的内容你不可能让他全部显示,全部显示的话用户体验度会非常不好,这时就要用到全文 ...

  3. android tesseract-ocr实例教程(包含中文识别)(附源码)

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍     快过年了,博主的新应用-屏幕取词之了老花镜的编码工作也在紧锣密鼓的进行中.下面分享一下这个应用 ...

  4. 急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)

    (2016年3月更:由于后来了解到GGTalk开源即时通讯系统,因此直接采用了该资源用于项目开发,在此对作者表示由衷的感谢!) —————————————————————————————————— 人 ...

  5. 一个基于jQuery写的弹窗效果(附源码)

    最近项目中频繁遇到需要弹出窗口的功能,一直使用浏览器默认的Alert和Confirm弹窗,感觉视觉效果不是那么好,而从网上下载的话又找不到合适的,找到的话有些也是十分臃肿,有时候感觉学习配置的功夫自己 ...

  6. Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)

    http://blog.csdn.net/yanzi1225627/article/details/21294553 原文

  7. Android ORC文字识别之识别身份证号等(附源码)

    项目地址https://github.com/979451341/OrcTest 我们说说实现这个项目已实现的功能,能够截图手机界面的某一块,将这个某一块图片的Bitmap传给tess-two的代码来 ...

  8. Android 音视频深入 六 使用FFmpeg播放视频(附源码下载)

    本篇项目地址,求starhttps://github.com/979451341/Audio-and-video-learning-materials/tree/master/FFmpeg%E6%92 ...

  9. Android 音视频深入 十 FFmpeg给视频加特效(附源码下载)

    项目地址,求starhttps://github.com/979451341/Audio-and-video-learning-materials/tree/master/FFmpeg(AVfilte ...

随机推荐

  1. Mac苹果电脑单片机开发

    1.安装虚拟机 可以阅读往期文章:Mac苹果电脑安装虚拟机 2.在虚拟机上安装CH340驱动,keil4,PZ-ISP, 下载 CH340驱动安装  下载keil4破解及汉化  下载普中科技烧录软件

  2. Hive基于UDF进行文本分词

    本文大纲 UDF 简介 Hive作为一个sql查询引擎,自带了一些基本的函数,比如count(计数),sum(求和),有时候这些基本函数满足不了我们的需求,这时候就要写hive hdf(user de ...

  3. JAVADOC 文档注释命令

    简介 javadoc命令是用来生成自己API文档的 javadoc参数信息 @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @ret ...

  4. 美团关于分布式ID实践方案细节

    摘自https://tech.meituan.com/2019/03/07/open-source-project-leaf.html Leaf是美团基础研发平台推出的一个分布式ID生成服务,名字取自 ...

  5. 出现org.apache.ibatis.binding.BindingException异常

    出现绑定式异常 查看target文件夹里面再mapper中,发现运行时缺少xml文件 解决办法 1.将xml文件复制到target中Mapper文件夹下面. 2.将xml放到resource目录下 3 ...

  6. 解析SwiftUI布局细节(三)地图的基本操作

    前言 前面的几篇文章总结了怎样用 SwiftUI 搭建基本框架时候的一些注意点(和这篇文章在相同的分类里面,有需要了可以点进去看看),这篇文章要总结的东西是用地图数据处理结合来说的,通过这篇文章我们能 ...

  7. spring cache 学习——@CachePut 使用详解

    1. 功能说明 当需要在不影响方法执行的情况下更新缓存时,可以使用 @CachePut,也就是说,被 @CachePut 注解的缓存方法总是会执行,而且会尝试将结果放入缓存(当然,是否真的会缓存还跟一 ...

  8. Java基础--接口回调(接口 对象名 = new 类名)理解

    接口 对象名1 = new 类名和类名 对象名2 = new 类名的区别是什么? 实例 /** *Person.java 接口 */ public interface Person { void in ...

  9. python使用msgpack(umsgpack)

    前言 如果有业务需要将一个数据塞进队列由另一端接收,我们就需要考虑到数据的大小,因为这跟队列的效率和稳定性正相关,如果你希望能对这部分数据进行一定的压缩,并且提高解压缩的效率时,希望你能想到 msgp ...

  10. C中的dll 、lib和exe文件

    参考:链接1   链接2 DLL 动态链接库(Dynamic Link Library,缩写为DLL),运行时加载是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源.动态链接 ...