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.hqwc.cn/news/213579.html

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

相关文章

nvm-切换node版本工具安装-方便好用

去官网下载&#xff1a; https://github.com/coreybutler/nvm-windows#installation--upgrades 网站进去后点击下载&#xff0c;点击那个exe文件就下载本地&#xff0c;然后双击安装 安装nvm 就直接按照窗口提示的下一步就行&#xff0c;如果改了某些地方会不成功&#xf…

(保姆级教程)Mysql中事务的概念,什么是事务,如何使用事务,以及事务的隔离级别,什么是脏读、幻读,代码演示

继续讲解 Mysql 数据库中最重要的一个概念&#xff1a;事务 文章目录 事务1.1 什么是事务1.2 执行原理1.3 如何操作事务1.4 事务的特点&#xff08;ACID原则&#xff09;1.5 事务并发1.6 事务隔离级别1.6.1 事务并发问题操作演示1.6.2 脏读演示1.6.3 不可重复读演示1.6.4 幻读演…

人机交互模块的发展

人机交互&#xff08;Human-Computer Interaction&#xff0c;HCI&#xff09;是指人与计算机之间进行交互和信息交换的过程。人机交互模块的发展经历了多个阶段&#xff0c;从早期的命令行界面到现在多样化的交互方式&#xff0c;不断发展和创新。以下是一些人机交互模块的发展…

[Linux] 冯诺依曼体系结构 与 操作系统

文章目录 1、冯诺依曼体系结构2、操作系统 1、冯诺依曼体系结构 冯诺依曼结构也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置&#xff0c;因此程序指令和数据的宽度相…

性能优化中使用Profiler进行页面卡顿的排查及解决方式

文章目录 一、前言二、页面卡顿的排查方式1、耗时操作的监控2、页面卡顿的监控 三、参考链接 一、前言 程序的优化在做过线上bug处理&#xff0c;布局层级优化&#xff0c;项目依赖库版本更新&#xff0c;重复库合并&#xff0c;删除未使用的资源&#xff0c;删除冗余的库&…

给sprite上增加刷光动效

游戏引擎 —— cocos creator 3.52 此动效给动态修改尺寸的图片增加一层刷光的效果&#xff0c;直接贴代码 CCEffect %{techniques:- passes:- vert: sprite-vs:vertfrag: sprite-fs:fragdepthStencilState:depthTest: falsedepthWrite: falseblendState:targets:- blend: tr…

hive return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解决思路

参考学习 https://github.com/apache/hive/blob/2b57dd27ad61e552f93817ac69313066af6562d9/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java#L47 为啥学习error code 开发过程中遇到以下错误&#xff0c;大家觉得应该怎么办&#xff1f;从哪方面入手呢&#xff1f; 1.百…

Zynq-7000系列FPGA使用 Video Processing Subsystem 实现图像缩放,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案自己写的HLS图像缩放方案 3、设计思路详解Video Processing Subsystem 介绍 4、工程代码详解PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项…

时间敏感网络TSN的车载设计实践: 802.1Qbv协议

▎概述 IEEE 802.1Qbv[1]是TSN系列协议中备受关注的技术之一&#xff0c;如图1所示&#xff0c;它定义了一种时间感知整形器&#xff08;Time Aware Shaper&#xff0c;TAS&#xff09;&#xff0c;支持Qbv协议的交换机可以按照配置好的门控列表来打开/关闭交换机出口队列&…

【Web】NewStarCtf Week2 个人复现

目录 ①游戏高手 ②include 0。0 ③ez_sql ④Unserialize&#xff1f; ⑤Upload again! ⑥ R!!C!!E!! ①游戏高手 经典前端js小游戏 检索与分数相关的变量 控制台直接修改分数拿到flag ②include 0。0 禁了base64和rot13 尝试过包含/var/log/apache/access.log,ph…

如何进行MySQL的主从复制(MySQL5.7)

背景&#xff1a;在一些Web服务器开发中&#xff0c;系统用户在进行数据访问时&#xff0c;基本都是直接操作数据库MySQL进行访问&#xff0c;而这种情况下&#xff0c;若只有一台MySQL服务器&#xff0c;可能会存在如下问题 数据的读和写的所有压力都会由一台数据库独…

合封芯片未来趋势如何?合封优势能否体现?

芯片已经成为现代电子设备的核心组件。为了提高系统的性能、稳定性和功耗效率&#xff0c;一种先进的芯片封装技术——合封芯片应运而生。 合封芯片作为一种先进的芯片封装技术&#xff0c;合封芯片是一种将多个芯片&#xff08;多样选择&#xff09;或不同的功能的电子元器件…