android 学习随笔二十九(自定义监听 )
2016-10-21 18:14
232 查看
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 学习随笔二十九(自定义监听 )
- 2014-10-27Android学习------布局处理(八)------自定义ListView的监听事件和Adapter的实现-----城市列表应用程序
- 2014-10-27Android学习------自定义widget的监听事件的实现-----城市列表应用程序
- Android学习之自定义TextWatcher来监听文本最大输入字数
- android 项目学习随笔十(自定义ProgressBar)
- android 项目学习随笔十(自定义ProgressBar)
- Android客户端之“微服私访”App的系统学习(七)XRecyclerView快速实现列表界面+自定义Search输入框,软键盘搜索按钮监听+TextView部分样式改变
- Android 自定义 View 中 onKeyDown监听 没反应
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- Android视音频录制实现步骤(Android学习随笔八)
- Android TextView标点符号换行问题(顺便学习Android自定义View)
- android学习摘记——自定义Adapter的心得
- Android 自定义组件学习 2
- 关于TelephonyManager的使用与手机电池电量小知识(Android学习随笔五)
- 关于手机定时服务的小知识(Android学习随笔六)
- 关于横竖屏切换问题几点知识(Android学习随笔一)
- Android学习小结(三)——自定义圆角ImageView控件
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!