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() {
}
});
}
android 学习随笔二十九(自定义监听 )的更多相关文章
- android 学习随笔二十(多媒体编程 )
1.图片处理 加载大图片 图片大小的计算 图片大小 = 图片的总像素 * 每个像素占用的大小 * 单色图:每个像素占用1/8个字节* 16色图:每个像素占用1/2个字节* 256色图:每个像素占用1个 ...
- android 学习随笔二十八(应用小知识点小结 )
去掉标题栏的方法 第一种:也一般入门的时候经常使用的一种方法requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏注意这句一定要写在setConte ...
- android 学习随笔二十六(动画:属性动画)
属性动画,属性动画是真正改变对象的某个属性的值 * 补间动画,只是一个动画效果,组件其实还在原来的位置上,xy没有改变1.位移:* 第一个参数target指定要显示动画的组件* 第二个参数proper ...
- android 学习随笔二十五(动画:补间动画)
补间动画(TweenAnimation) * 原形态变成新形态时为了过渡变形过程,生成的动画就叫补间动画(为了让对象从初始状态向结束状态改变的过程更加自然而自动生成的动画效果)* 位移.旋转.缩放.透 ...
- android 学习随笔二十四(动画:帧动画)
帧动画,一张张图片不断的切换,形成动画效果 * 在drawable目录下定义xml文件,子节点为animation-list,在这里定义要显示的图片和每张图片的显示时长 * FrameAnimatio ...
- android 学习随笔二十二(小结)
ADB进程 * adb指令 * adb install xxx.apk * adb uninstall 包名 * adb devices * adb start-server * adb kill-s ...
- 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView
目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...
- android 项目学习随笔二十(屏幕适配)
1.图片适配 放入相同名称的资源文件,机器根据不同分辨率找相近的资源 240*320 ldpi 320*480 mdpi 480*800 hdpi 720*1280 xhdpi 2.布局适配 在不同的 ...
- Android学习笔记(十九)——内容提供器
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整 ...
随机推荐
- angularJs的工具方法
- [收藏夹整理]VC部分
c++多线程(一) C++11 多线程 鸡啄米:C++编程入门系列之十二(类与对象:面向对象设计的基本思想和特点) 鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员) [笔记]VS ...
- kinect for windows sdk
https://msdn.microsoft.com/library/dn799271.aspx
- robot framework安装步骤
1.安装python-2.7.11.amd64.msi 2.在命令行窗口输入python命令验证是否成功 3.安装wxPython2.8-win64-unicode-2.8.12.1-py27.exe ...
- WCF第一个Demo
参考文献:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html 自己学习的Demo 第一个是控制台宿主服务,第二个是Windows服 ...
- OGRFeature的DestroyFeature方法
Ogr的销毁DestroyFeature方法: void OGRFeature::DestroyFeature( OGRFeature *poFeature ) { delete poFeature; ...
- openId 列表
http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html 根据OpenID列表群发[订阅号不可用,服务号认证后可用] ...
- tomcat 6.0.44 “has failed to stop it. This is very likely to create a memory leak” 问题调查
1. 问题起因 我们项目中缓存模块某个实现采用了ehcache(2.4.3),当项目部署到tomcat中后,对tomcat做停止服务操作(点击eclipse的console红色的停止按钮,奇怪的是有小 ...
- MySQL-profiling的使用
分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析.该参数可以在全局和session级别来设置.对于全局级别则作用于整个MySQL ...
- Reporting services导出的Excel文件避免出现隐藏行列的布局
开发Reporting services时,为了避免在导出的Excel文件中出现隐藏的行和列,必须遵循以下规则: 1.Page header中的Textbox直接必须紧密贴合在一起 2.Page he ...