android 回调接口学习(自定义Dialog 获取数据数据回调)
来源:互联网 发布:工业设计手绘工具知乎 编辑:程序博客网 时间:2024/05/16 09:41
功能:
将单独的一个Dialog提取出来以复用代码,然后在activity中去new 一个Dialog出来,能够获取Dialog选取的数据;
具体实现
TopicSingleChoiceDialog.java
private int topicID=-1;//真正要获取的数据
自定义内部类接口
public interface OnTestListening{ void getTopicID(int topicID); }
内部变量
private OnTestListening onTestListening;
类实现点击按钮监听器(就是我们点击了该按钮后,activity将回调 获取数据)
public class TopicSingleChoiceDialog extends AlertDialog.Builder implements DialogInterface.OnClickListener {
具体怎么做呢,
让该按钮先绑定该监听器
this.setPositiveButton("确定", this);
监听器具体实现
@Override public void onClick(DialogInterface dialogInterface, int i) { onTestListening.getTopicID(topicID); }
即等价于
this.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { onTestListening.getTopicID(topicID); } });
但是由于onTestListening在内部类,onTestListening要final,而interface的onTestListening是不能被final的(貌似是这样),最后采用上面的方法 让TopicSingleChoiceDialog 去实现接口
那么到这里后,当点击确定按钮后,就会执行 onTestListening.getTopicID(topicID);
那么 我们只要在activity中实例化dialog(Context cx,new TopicSingleChoiceDialog.OnTestListening())
例如:
TopicSingleChoiceDialog topicSingleleChoiceDialog =new TopicSingleChoiceDialog(ct, new TopicSingleChoiceDialog.OnTestListening() { @Override public void getTopicID(int topicID) { Log.i("zjx","topicID:"+topicID); } });
便可以获取到我们要的topicID
当然 对于复杂数据 ,只要将getTopicID中的参数改为Bundle 或者map等即可
完整代码:
package com.france.sharereader.ui.view;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.widget.Toast;/** * Created by Administrator on 2015/11/15. */public class TopicSingleChoiceDialog extends AlertDialog.Builder implements DialogInterface.OnClickListener { private int topicID=-1;//真正要获取的数据 private OnTestListening onTestListening; public TopicSingleChoiceDialog(Context context,OnTestListening onTestListening) { super(context); this.onTestListening=onTestListening; this.setTitle("选择所属话题"); final String[] hobbies = {"编译原理", "软件工程", "数据挖掘", "电子设计"}; // 设置一个单项选择下拉框 /** * 第一个参数指定我们要显示的一组下拉多选框的数据集合 * 第二个参数代表哪几个选项被选择,如果是null,则表示一个都不选择,如果希望指定哪一个多选选项框被选择, * 需要传递一个boolean[]数组进去,其长度要和第一个参数的长度相同,例如 {true, false, false, true}; * 第三个参数给每一个多选项绑定一个监听器 */ this.setSingleChoiceItems(hobbies, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { setTopicID(which); } }); this.setPositiveButton("确定", this); this.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); this.show(); } public interface OnTestListening{ void getTopicID(int topicID); } public void setTopicID(int topicID) { this.topicID = topicID; } @Override public void onClick(DialogInterface dialogInterface, int i) { onTestListening.getTopicID(topicID); }}
activity中:
TopicSingleChoiceDialog topicSingleleChoiceDialog =new TopicSingleChoiceDialog(ct, new TopicSingleChoiceDialog.OnTestListening() { @Override public void getTopicID(int topicID) { Log.i("zjx","topicID:"+topicID); } });
0 0
- android 回调接口学习(自定义Dialog 获取数据数据回调)
- 【史上最简单】android 自定义dialog中的接口回调
- url获取数据接口调用方法+自定义显示(接口回调)
- 自定义Dialog并实现接口回调
- 自定义Dialog接口回调参数
- 自定义Dialog回传数据给Activity
- 自定义dialog对话框获取EditText数据demo
- Android接口回调传递数据
- Android 使用 AsyncTask异步加载 和 接口回调 获取联网获取到的 json数据 工具类
- 封装好的Android对话框Dialog,包含了丰富的dialog样式、点击事件数据回传接口。直接调用封装好的方法即可操作dialog
- android自定义回调接口
- Interface接口回调数据
- Java到Android小项目(自定义Dialog)来理解接口回调在项目中的应用
- android异步任务及接口回调传输数据
- Android 自定义Dialog,自定义接口监听事件。
- Android中Dialog数据的获取报错空指针问题
- android获取webservice接口的数据
- Android 通过调用接口获取数据
- 出现Terminating app due to uncaught exception 'NSUnknownKeyException', reason: 错误的解决方法
- WebKit之WebGL实现
- [ecshop 资料]ECshop彻底去版权(同时适用于2.7.3)
- JAVA中怎样把用户输入的字符串存入数组中?
- WebKit之Canvas2D实现
- android 回调接口学习(自定义Dialog 获取数据数据回调)
- 蓝懿 iOS 技术交流和心得分享 11.19
- 在idea使用jetty
- 初识Linux--Federa
- Populating Next Right Pointers in Each Node
- 简单理解Apache,Mysql,PHP之间的联系
- URAL 1354 Palindrome. Again Palindrome (回文 + KMP)
- WebKit之网络栈
- NSInvocation类的学习