zoukankan      html  css  js  c++  java
  • android 学习随笔二十九(自定义监听 )

    package com.itheima.momo.dialog;
    
    import com.itheima.momo.R;
    
    import android.app.AlertDialog;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.View;
    
    public abstract class BaseDialog extends AlertDialog implements android.view.View.OnClickListener{
    
    protected BaseDialog(Context context) {
    //通过构造指定主题,主题中就已经设置了弧形边角的背景
    super(context, R.style.BaseDialog);
    // TODO Auto-generated constructor stub
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    initView();
    initListener();
    initData();
    }
    
    public abstract void initView();
    public abstract void initListener();
    public abstract void initData();
    public abstract void processClick(View v);
    
    
    /*
    * 这个是继承得来的方法,用这个方法后,一个activity里面所有组件的按钮都只要去
    * 实现抽象方法就行,组件上就会自动的挂上侦听,而不用每个组件都写一个点击事件
    * 了,这样可以提高代码的复用性,还有代码的间接性。
    */
    @Override
    public void onClick(View v) {
    processClick(v);
    
    }
    }
    package com.itheima.momo.dialog;
    
    import com.itheima.momo.R;
    
    import android.content.Context;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class ConfirmDialog extends BaseDialog {
    
    private String title;
    private String message;
    private TextView tv_dialog_title;
    private TextView tv_dialog_message;
    private Button bt_dialog_cancel;
    private Button bt_dialog_confirm;
    private OnConfirmListener onConfirmListener;
    
    public String getTitle() {
    return title;
    }
    
    public void setTitle(String title) {
    this.title = title;
    }
    
    public String getMessage() {
    return message;
    }
    
    public void setMessage(String message) {
    this.message = message;
    }
    
    protected ConfirmDialog(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    }
    
    //在类中写一个静态方法,直接获取本类的对象。
    public static void showDialog(Context context, String title, String message, OnConfirmListener confirmListener){
    ConfirmDialog dialog = new ConfirmDialog(context);
    dialog.setTitle(title);
    dialog.setMessage(message);
    dialog.setConfirmListener(confirmListener);
    dialog.show();
    }
    
    @Override
    public void initView() {
    //设置对话框显示的布局文件
    setContentView(R.layout.dialog_confirm);
    
    tv_dialog_title = (TextView) findViewById(R.id.tv_dialog_title);
    tv_dialog_message = (TextView) findViewById(R.id.tv_dialog_message);
    
    bt_dialog_cancel = (Button) findViewById(R.id.bt_dialog_cancel);
    bt_dialog_confirm = (Button) findViewById(R.id.bt_dialog_confirm);
    
    }
    
    @Override
    public void initListener() {
    bt_dialog_cancel.setOnClickListener(this);
    bt_dialog_confirm.setOnClickListener(this);
    
    }
    
    @Override
    public void initData() {
    tv_dialog_title.setText(title);
    tv_dialog_message.setText(message);
    
    }
    
    @Override
    public void processClick(View v) {
    switch (v.getId()) {
    //如果取消按钮按下时,侦听存在,那么调用侦听的onCancel
    case R.id.bt_dialog_cancel:
    if(onConfirmListener != null){
    onConfirmListener.onCancel();
    }
    break;
    case R.id.bt_dialog_confirm:
    if(onConfirmListener != null){
    onConfirmListener.onConfirm();
    }
    break;
    }
    //对话框消失
    dismiss();
    }
    
    public void setConfirmListener(OnConfirmListener confirmListener) {
    this.onConfirmListener = confirmListener;
    }
    
    //自己定义一个接口,为了保证其能够被多次复用。
    public interface OnConfirmListener{
    void onCancel();
    void onConfirm();
    }
    }

    ---------------------------------------------------------------------------------------------

    private void showDeleteDialog() {
    ConfirmDialog.showDialog(getActivity(), "提示", "真的要删除会话吗?", new OnConfirmListener() {

    @Override
    public void onConfirm() {
    deleteSms();
    }

    @Override
    public void onCancel() {
    }
    });

    }

  • 相关阅读:
    js对象Array —— 使用.操作符和用['xxx']访问对象的区别
    JavaScript为字符串提供的一些常用方法
    ES6新增属性——,模板字符串`` 中可使用${ }代替‘+’字符串拼接
    【vue】使用vue+element搭建项目,Tree树形控件使用
    vue循环遍历List,Map,Array
    解决分页查询只能查到本页信息的问题
    vue之 js字符串驼峰和下划线互相转换
    PHP中的对象遍历技巧
    php类的复制(克隆)
    php类的自动加载
  • 原文地址:https://www.cnblogs.com/ecollab/p/5985668.html
Copyright © 2011-2022 走看看