博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义AlertDialog工具类封装
阅读量:4122 次
发布时间:2019-05-25

本文共 4935 字,大约阅读时间需要 16 分钟。

将两个自定义的AlertDialog封装成工具类,直接拿来用!

先上图:

在这里插入图片描述

在这里插入图片描述

其中样式一用来弹出提示消息,样式二用来做简单的选择很合适。

上代码

AlertDialogUtils.java

public class AlertDialogUtils {    public static AlertDialogUtils getInstance() {        return new AlertDialogUtils();    }    /**     * 弹出自定义样式的AlertDialog     *     * @param context 上下文     * @param title   AlertDialog的标题     * @param tv      点击弹出框选择条目后,要改变文字的TextView     * @param args    作为弹出框中item显示的字符串数组     */    public void showAlertDialog(Context context, String title, final TextView tv, final List
args) { AlertDialog.Builder builder = new AlertDialog.Builder(context); final AlertDialog dialog = builder.create(); dialog.show(); View view = LayoutInflater.from(context).inflate(R.layout.alert_dialog_salary, null); TextView tvTitle = (TextView) view.findViewById(R.id.tv_title_alert_dialog_salary); ListView list = (ListView) view.findViewById(R.id.lv_alert_dialog_salary); tvTitle.setText(title); ListAdapter adpter = new ArrayAdapter
(context, R.layout.item_listview_salary, R.id.tv_item_listview_salary, args); list.setAdapter(adpter); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView
parent, View view, int position, long id) { String str = args.get(position); tv.setText(str); if (onDialogItemSelectListener != null) { onDialogItemSelectListener.onItemSelect(str); } dialog.dismiss(); } }); dialog.getWindow().setContentView(view); } private OnDialogItemSelectListener onDialogItemSelectListener; public void setOnDialogItemSelectListener(AlertDialogUtils.OnDialogItemSelectListener onDialogItemSelectListener) { this.onDialogItemSelectListener = onDialogItemSelectListener; } /** * item选中回调接口 */ public interface OnDialogItemSelectListener { /** * item选中回调方法 * * @param str 选中的item中的String */ void onItemSelect(String str); } /** * 带有确认取消按钮的自定义dialog * * @param context 上下文 * @param message 显示的信息 */ public static void showConfirmDialog(Context context, String message) { AlertDialog.Builder builder = new AlertDialog.Builder(context); final AlertDialog alertDialog = builder.create(); alertDialog.show(); View view = View.inflate(context, R.layout.view_alert_dialog_confirm, null); TextView tvMsg = (TextView) view.findViewById(R.id.tv_message_dialog); TextView tvCancel = (TextView) view.findViewById(R.id.tv_cancel_dialog); TextView tvConfirm = (TextView) view.findViewById(R.id.tv_confirm_dialog); tvMsg.setText(message); tvCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onButtonClickListener.onNegativeButtonClick(alertDialog); } }); tvConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onButtonClickListener.onPositiveButtonClick(alertDialog); } }); alertDialog.getWindow().setContentView(view); } private static OnButtonClickListener onButtonClickListener; public void setOnButtonClickListener(OnButtonClickListener onButtonClickListener) { this.onButtonClickListener = onButtonClickListener; } /** * 按钮点击回调接口 */ public interface OnButtonClickListener { /** * 确定按钮点击回调方法 * * @param dialog 当前 AlertDialog,传入它是为了在调用的地方对 dialog 做操作,比如 dismiss() * 也可以在该工具类中直接 dismiss() 掉,就不用将 AlertDialog 对象传出去了 */ void onPositiveButtonClick(AlertDialog dialog); /** * 取消按钮点击回调方法 * * @param dialog 当前AlertDialog */ void onNegativeButtonClick(AlertDialog dialog); }}

样式一:带确定取消按钮的布局文件 view_alert_dialog_confirm.xml

样式二:带标题的布局文件 alert_dialog_salary.xml

里面的背景选择器比较简单就不贴了。

使用方法

样式一:

AlertDialogUtils utils = AlertDialogUtils.getInstance();utils.showConfirmDialog(this, "确定删除本条通知公告吗?");//按钮点击监听utils.setOnButtonClickListener(new AlertDialogUtils.OnButtonClickListener() {    @Override    public void onPositiveButtonClick(AlertDialog dialog) {        dialog.dismiss();        //做自己的操作    }    @Override    public void onNegativeButtonClick(AlertDialog dialog) {        dialog.dismiss();    }});

样式二:

//获取 AlertDialogUtils 对象AlertDialogUtils alertDialogUtils = AlertDialogUtils.getInstance();//传入参数:tvDepartment是选择完之后要改变文字内容的TextViewalertDialogUtils.showAlertDialog(ConferenceSendActivity.this, "请选择部门", tvDepartment, names);

转载地址:http://tvvpi.baihongyu.com/

你可能感兴趣的文章
JS 刷新当前页面 返回上一页并刷新的方法
查看>>
SSH2项目搭建
查看>>
解压版Tomcat创建服务启动
查看>>
oracle 存储过程教程
查看>>
基于jquery框架、google chart tools图形报表gvChart的应用心得
查看>>
web项目快速原型设计
查看>>
struts2 OGNL的用法介绍
查看>>
Java Base64加密、解密原理Java代码
查看>>
用Java修改Window或者Linux下的hosts文件
查看>>
java servlet 调用oracle数据库存储过程
查看>>
java struts2模拟百度百科图片中的防盗链设置
查看>>
java 通过request.getHeader("user-agent")解析浏览器
查看>>
java 服务器获取请求的IP方法之总结
查看>>
数据库学习,树形结构的数据库表Schema设计方案
查看>>
Java常用文件目录处理代码集
查看>>
java 利用java运行时的方法得到当前屏幕截图的方法
查看>>
java 获取控制台的输入的两个方法
查看>>
java实现电脑远程控制完整源代码
查看>>
软件行业心得,软件工程师工作总结
查看>>
java 开发银行支付、对账时证书相关的操作总结
查看>>