Android : AlertDialog对话框、单选、多选、适配器-简单应用

示例图:

1 :创建 AlertDialog.Builder 对象;
2 :调用 setIcon() 设置图标, setTitle() setCustomTitle() 设置标题;
3 :设置对话框的内容: setMessage() 还有其他方法来指定显示的内容;
4 :调用 setPositive/Negative/NeutralButton() 设置:确定,取消,中立按钮;
5 :调用 create() 方法创建这个对象,再调用 show() 方法将对话框显示出来;

MainActivity.java

package com.example.myalertdialog;import androidx.appcompat.app.AppCompatActivity;import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;import java.util.ArrayList;
import java.util.List;// AlertDialog对话框 应用
public class MainActivity extends AppCompatActivity implements View.OnClickListener {//组件private Button btnOne,btnTwo,btnThree,btnFour,btnFive;private TextView textView;private Context context;//对话框private AlertDialog.Builder builder =null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);context =this;btnOne = findViewById(R.id.btn_one);btnTwo = findViewById(R.id.btn_Two);btnThree = findViewById(R.id.btn_three);btnFour =findViewById(R.id.btn_four);btnFive = findViewById(R.id.btn_five);textView = findViewById(R.id.btn_tv);//设置事件btnOne.setOnClickListener(this);btnTwo.setOnClickListener(this);btnThree.setOnClickListener(this);btnFour.setOnClickListener(this);btnFive.setOnClickListener(this);}@Overridepublic void onClick(View v) {if(v.getId() == R.id.btn_one){//普通对话框builder = new AlertDialog.Builder(context);//标题builder.setTitle("游戏提示:");//logobuilder.setIcon(R.mipmap.a);//内容builder.setMessage("您确认要开始游戏吗?");//确定按钮builder.setPositiveButton("开始", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context ,"开始游戏",Toast.LENGTH_SHORT).show();}});//取消按钮  null 表示什么都不做builder.setNegativeButton("取消",null);//中立按钮builder.setNeutralButton("中立", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,"中立您选择了"+which,Toast.LENGTH_SHORT).show();}});//创建 显示builder.create().show();}else if (R.id.btn_Two == v.getId()) {//单选对话框 1 只能选一次//数据源final String[] arr = new String[]{"校长","老师","学生","家长"};//单选对话框builder = new AlertDialog.Builder(context);//标题builder.setTitle("请选择您的身份:");//图标builder.setIcon(R.mipmap.a);//内容builder.setItems(arr, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,"您选择了"+arr[which],Toast.LENGTH_SHORT).show();textView.setText(arr[which]);}});//取消按钮builder.setNegativeButton("取消",null);//创建 显示builder.create().show();} else if (v.getId() == R.id.btn_three) {// 单选对话框2 可反复选择builder = new AlertDialog.Builder(context);//数据源 2final String[] arr = new String[]{"java","php","android","c++"};//标题builder.setTitle("请选择课程:");//图标builder.setIcon(R.mipmap.a);//内容   默认选择项 -1表示不选择  0表示选中第一个builder.setSingleChoiceItems(arr, -1, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,"您选择了"+arr[which],Toast.LENGTH_SHORT).show();textView.setText(arr[which]);}});//取消按钮builder.setNegativeButton("取消",null);//创建 显示builder.create().show();} else if (v.getId() == R.id.btn_four) {// 多选对话框builder = new AlertDialog.Builder(context);//选择后的集合List<String> datas = new ArrayList<>();//数据源final String[] arr = {"胡萝卜炒肉","辣椒炒蛋","水煮活鱼","清蒸龙虾"};//标题builder.setTitle("请选择菜单:");//图标builder.setIcon(R.mipmap.a);//内容 setMultiChoiceItems// 数据源,默认选中哪几个, null 表示一个都不选// new boolean[]{false, false, true, true}builder.setMultiChoiceItems(arr, null, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {if(isChecked){datas.add(arr[which]);}else{datas.remove(arr[which]);}}});//确定按钮 setPositiveButtonbuilder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,"您选择了"+datas.toString(),Toast.LENGTH_SHORT).show();textView.setText(datas.toString());}});//取消builder.setNeutralButton("取消",null);//创建 显示builder.create().show();}if(v.getId() == R.id.btn_five){// 适配器对话框 调用写的方法builder = AlertSimplAdapter.getAlertBuilder(context);//创建 显示builder.create().show();}}}

写一个方法类 AlertSimplAdapter.java

package com.example.myalertdialog;import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.widget.SimpleAdapter;
import android.widget.Toast;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class AlertSimplAdapter {//图片private static final int[] arrImg = new int[]{R.mipmap.a, R.mipmap.b, R.mipmap.c,R.mipmap.d, R.mipmap.e, R.mipmap.f,R.mipmap.g, R.mipmap.h, R.mipmap.i,R.mipmap.a,  R.mipmap.a, R.mipmap.a,R.mipmap.a,  R.mipmap.a, R.mipmap.a};//标题private static final String[] arrTitle = {"张三","李四","张三丰","小学群聊","周芷若","周先生","老领导","玖龙玺","阿道夫","张三","李四","张三丰","张三","李四","张三丰"};//内容private static String[] arrContent =new String[]{"早啊!","你在干啥","你最近在练什么武功","呼叫XXX家长","最近咋样","吃饭了吗?","啥时候有空喝茶呀?",".....","小伙子,学魔法吗?","早啊!","你在干啥","你最近在练什么武功","早啊!","你在干啥","你最近在练什么武功"};//时间private static String[] arrTime = {"刚刚","昨天","11-20","10-1","2023-11-20","17:30","9:00","10-1","2000-01-01","刚刚","昨天","11-20","刚刚","昨天","11-20"};public static AlertDialog.Builder getAlertBuilder(Context context){AlertDialog.Builder builder = new AlertDialog.Builder(context);//标题builder.setTitle("**通讯信息**");//logobuilder.setIcon(R.mipmap.a);//设置数据源  List<? extends Map<String, ?>> dataList<Map<String, Object>> datas = new ArrayList<>();for(int i =0 ; i<arrImg.length;i++) {//各项数据Map<String, Object> itemData = new HashMap<>();itemData.put("item_img", arrImg[i]);itemData.put("item_title", arrTitle[i]);itemData.put("item_content", arrContent[i]);itemData.put("item_time", arrTime[i]);//添加到Listdatas.add(itemData);}//    第1个参数: Context
//    第2个参数: 数据 List<map<String,Object>> datas
//    第3个参数: xml资源文件 R.layout....
//    第4个参数: 控制从datas中取出哪些数据 与map中的 key一致
//    第5个参数: 布局文件的id  控制取出的数据要填充哪些界面元素。SimpleAdapter simpleAdapter = new SimpleAdapter(context,datas,R.layout.content_layout,new String[]{"item_img","item_title","item_content","item_time"},new int[]{R.id.btn_image_view,R.id.btn_title_view,R.id.btn_tv_content,R.id.btn_time});//内容 设置适配器builder.setAdapter(simpleAdapter, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context, "您选择了"+which, Toast.LENGTH_SHORT).show();}});//取消builder.setPositiveButton("取消",null);return builder;}
}

主布局文件 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:orientation="vertical"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/btn_tv"android:text="您选择了:"android:textSize="24sp"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/btn_one"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="24sp"android:text="普通的AlertDialog"/><Buttonandroid:id="@+id/btn_Two"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="24sp"android:text="单选AlertDialog"/><Buttonandroid:id="@+id/btn_three"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="24sp"android:text="单选2AlertDialog"/><Buttonandroid:id="@+id/btn_four"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="24sp"android:text="多选AlertDialog"/><Buttonandroid:id="@+id/btn_five"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="24sp"android:text="适配器AlertDialog"/></LinearLayout>

适配器中的布局 content_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><!-- RelativeLayout 相对布局--><ImageViewandroid:id="@+id/btn_image_view"android:layout_width="50dp"android:layout_height="50dp"android:layout_marginLeft="10dp"/><!-- 标题在图片的右边--><TextViewandroid:layout_marginLeft="10dp"android:layout_toRightOf="@+id/btn_image_view"android:id="@+id/btn_title_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="22sp"android:textStyle="bold"/><!-- 画条线在图片的右边在文字的下面--><TextViewandroid:id="@+id/btn_tv_line"android:layout_below="@+id/btn_title_view"android:layout_marginLeft="10dp"android:layout_toRightOf="@+id/btn_image_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#ccc"android:minHeight="1dp"android:maxHeight="1dp"/><!-- 内容在图片的右边在线的下面--><TextViewandroid:layout_below="@+id/btn_tv_line"android:layout_marginLeft="10dp"android:layout_toRightOf="@+id/btn_image_view"android:id="@+id/btn_tv_content"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20sp"/><!-- 时间提示在最右边显示在父元素内右边--><TextViewandroid:id="@+id/btn_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp"android:layout_alignParentRight="true"/></RelativeLayout>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/165936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每日一题】2824. 统计和小于目标的下标对数目-2023.11.24

题目&#xff1a; 2824. 统计和小于目标的下标对数目 给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target &#xff0c;请你返回满足 0 < i < j < n 且 nums[i] nums[j] < target 的下标对 (i, j) 的数目。 示例 1&#xff1a; 输入&#xff1…

双12电视盒子什么牌子好?数码小编力荐目前最强的电视盒子

最近想买电视盒子的网友非常多&#xff0c;小编收到了很多关于电视盒子方面的咨询&#xff0c;因此我特意整理了今年测评过的电视盒子&#xff0c;总结了五款目前最强的电视盒子&#xff0c;想知道双十二买电视盒子什么牌子好就赶紧收藏起来吧。 推荐一&#xff1a;泰捷WEBOX新…

“KeyarchOS:国产Linux新星的崛起与创新之路“

简介 KeyarchOS是一款由浪潮信息自主研发的服务器操作系统。它因为几个特点而受到我的青睐和一些用户的关注。 首先&#xff0c;KeyarchOS注重安全性和稳定性。它有一些防护和隔离功能&#xff0c;来帮助系统稳定运行&#xff0c;而且是中文语言更接地气。 其次&#xff0c;Ke…

OSG编程指南<十>:OSG几何体的绘制

1、场景基本绘图类 在 OSG 中创建几何体的方法比较简单&#xff0c;通常有 3 种处理几何体的手段&#xff1a; 使用松散封装的OpenGL 绘图基元&#xff1b;使用 OSG 中的基本几何体&#xff1b;从文件中导入场景模型。 使用松散封装的OpenGL 绘图基元绘制几何体具有很强的灵活…

牛气霸屏-快抖云推独立版V1.6.7

介绍 快抖云推全插件独立版是最近很火的牛气霸屏系统独立版&#xff0c;牛气霸屏系统就是商家通过系统在线创建抖音或快手霸屏活动&#xff0c;并生成该活动的爆客二维码&#xff0c;用户通过扫二维码即可参加活动&#xff08;活动可以是领取卡劵&#xff0c;抽奖等&#xff0…

DevExpress中文教程 - 如何在macOS和Linux (CTP)上创建、修改报表(下)

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 DevExpress Reports — 跨平台报表组件&#x…

企业数字化转型转什么?怎么转?这份攻略请收好

目录 -01-数字化转型“是什么” -02-数据驱动推动企业数字化转型 -03-企业数字化转型的行动路线图 数字化转型&#xff0c;转什么&#xff1f;怎么转&#xff1f;这些问题仍在困扰不少企业&#xff0c;也是每个企业转型升级不得不思考的重要问题。对此&#xff0c;中关村数字…

Python潮流周刊#1:如何系统地自学Python?

这里记录每周值得分享的 Python 及通用技术内容&#xff0c;部分内容为英文&#xff0c;已在小标题注明。&#xff08;本期标题取自其中一则分享&#xff0c;不代表全部内容都是该主题&#xff0c;特此声明。&#xff09; 文章&教程 1、编程语言的错误处理模式 文章讨论…

销售为什么会选择使用电销这种方式 ?

在网络经济时代的大环境下&#xff0c;网络营销作为一种新型营销模式和营销理念&#xff0c;已经抢占了大部分市场。 网络营销&#xff0c;是指利用互联网技术和现代信息技术&#xff0c;以及社交媒体平台&#xff0c;进行产品宣传、销售、服务、品牌传播等活动的一种营销模式。…

MySQL-进阶

存储引擎 MySQL体系结构 连接层&#xff1a; 最上层是一些客户端和连接服务&#xff0c;主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。服务层&#xff1a; 第二层架构主要完成大多数的核心服务功能&…

财报解读:三季度的美国零售,“沃尔玛效应”仍在持续

经济学中常用“沃尔玛效应”来指代“消费者减少消费时&#xff0c;会选择每种类别中价格最低的商品”这一现象。作为全球最大的零售商&#xff0c;沃尔玛一定程度上成为了消费市场的风向标。 近日&#xff0c;沃尔玛发布的2024财年第三季度财报显示&#xff0c;其相较去年同期…

22款奔驰S400L升级主动式氛围灯 光影彰显奔驰的完美

新款奔驰S级原车自带64色氛围灯&#xff0c;还可以升级原厂的主动式氛围灯&#xff0c;增加车内的氛围效果。主动式环境氛围灯包含263个LED光源&#xff0c;每隔1.6厘米就有一个LED光源&#xff0c;照明效果较过去明亮10倍&#xff0c;视觉效果更加绚丽&#xff0c;它还可结合智…

Python中的下划线使用教程:单下划线、双下划线和头尾双下划线详解

概要 Python是一种简单、易学、功能强大的编程语言&#xff0c;被广泛应用于各种领域。在Python中&#xff0c;下划线的使用有其特殊的含义和用途。本文将详细介绍Python中的单下划线、双下划线和头尾双下划线的使用教程&#xff0c;帮助读者更好地理解和应用这些特性。 一、单…

干货!ERP软件如何帮助企业实现信息化管理?

ERP即企业资源规划&#xff08;Enterprise Resource Planning&#xff09;系统&#xff0c;其核心是物料的追踪流转。而在物料追踪流转的基础上&#xff0c;又衍生出一系列各类资源计划的管理和追踪。因此ERP发展成为一款集成各类资源计划&#xff0c;也就是集成企业核心业务流…

化学气相沉积(CVD)中的TEOS

在半导体制程中&#xff0c;薄膜的沉积是核心的步骤之一&#xff0c;有接触过CVD的小伙伴应该或多或少听过TEOS这种物质&#xff0c;TEOS作为一种重要的沉积源&#xff0c;尤其在低温氧化硅的生成过程中&#xff0c;发挥了无可替代的角色。今天我们就来聊聊这种物质。 什么是TE…

windows电脑定时开关机设置

设置流程 右击【此电脑】>【管理】 【任务计划程序】>【创建基本任务】 gina 命令 查看 已经添加的定时任务从哪看&#xff1f;这里&#xff1a; 往下滑啦&#xff0c;看你刚才添加的任务&#xff1a;

2015年8月19日 Go生态洞察:Go 1.5版本发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

C++学习之路(二)C++如何实现一个超简单的学生信息管理系统?C++示例和小项目实例

这个示例实现了一个简单的学生信息管理系统。它包括了学生类的定义&#xff0c;可以添加学生信息、显示所有学生信息&#xff0c;将学生信息保存到文件并从文件加载信息。通过这个示例&#xff0c;你可以了解到如何使用类、函数和文件操作来构建一个基本的信息管理系统。 一个简…

【数据结构/C++】栈和队列_链队列

#include <iostream> using namespace std; // 链队列 typedef int ElemType; typedef struct LinkNode {ElemType data;struct LinkNode *next; } LinkNode; typedef struct {LinkNode *front, *rear; } LinkQueue; // 初始化 void InitQueue(LinkQueue &Q) {Q.fron…

【Unity实战】零代码实现物理2d绳子和绳桥效果——Hinge Joint 2D的使用

文章目录 最终效果前言一、绳子1. 方法一简单的实现问题&#xff0c;当我们想移动它时&#xff0c;所有节点就都断开了 2. 方法二精灵骨骼编辑使用精灵骨骼简单制作绳子效果限制每个节点旋转角度更大的质量添加稳定性 二、绳桥补充参考完结 最终效果 前言 本文使用Hinge Joint…