Android在自定义类中实现自定义监听器方式
监听器可以说是Android开发中最常用的东西之一。我们通过监听器可以监听对象的各种变化事件,并进行一些需要的处理,相当有用,而且使用起来也很简单。其实,监听器就相当于C++中的回调函数,达到条件就回调执行。
很多时候,我们在自定义控件类中也需要实现一些属性变化的监听器,实现跟原生控件监听器一样的功能。以下分几个步骤说明自定义监听器实现和使用(以自定义类MyClass加载完成监听器为例):
一、自定义监听器的实现:
1、 定义一个加载完成监听接口
//加载监听接口
public static interface LoadingListener {
public void onFinishedLoading(boolean success);
}
在MyClass自定义类中定义一个加载完成监听接口LoadingListener,接口中声明一个方法onFinishedLoading给使用该接口的类实现具体过程,success表示是否加载成功.
2、 声明接口并实现一个设置监听器的方法
声明LoadingListener接口
private LoadingListener mLoadingListener;
提供设置LoadingListener方法
public void setLoadingListener(LoadingListener listener) {
mLoadingListener = listener;
}
3、 对应的情况下调用该接口的方法
在MyClass加载完成的时候则调用监听接口的方法
mLoadingListener.onFinishedLoading(true);
二、自定义监听器的使用:
1、给MyClass的实例实现监听接口中方法
mMyClass.setLoadingListener(new MyClass.LoadingListener() {
@Override
public void onFinishedLoading(boolean success) {
//执行必要的处理
}
}
在onFinishedLoading函数中实现自定义的逻辑则可。
补充知识:android Activity 给 Fragment 设置回调的方法
这个实现方法很简单,可分为3步走:
1.在fragment中定义接口
2.在activity的定义时实现这个接口
3. 在fragment中的 onAttach 方法中 将 Context 转为 相应的接口;
代码如下:
public class AllFragment extends Fragment {
//......代码省略
@Override
public void onAttach(Context context) {
super.onAttach(context);
mOnChangeTabListener = (OnChangeTabListener) context;
}
public interface OnChangeTabListener{
void onChangeTab(String tag);
}
}
在activity的定义时实现该接口,如下:
public class SearchActivity extends AppCompactActivity implements AllFragment.OnChangeTabListener {
//代码省略
@Override
public void onChangeTab(String tag) {
if ("应用".equals(tag)){
mViewPager.setCurrentItem(1);
}else {
mViewPager.setCurrentItem(2);
}
}
}
以上这篇Android在自定义类中实现自定义监听器方式就是小编分享给大家的全部内容了,希望能给大家一个参考。
- 【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题
- Codeforces 839B Game of the Rows【贪心】
- Codeforces 839A Arya and Bran【暴力】
- 【Java学习笔记之十一】Java中常用的8大排序算法详解总结
- 浅谈zip格式处理逻辑漏洞
- C/C++中peek函数的原理及应用
- 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…【字符串+模拟】
- 洛谷 P1055 ISBN号码【字符串+模拟】
- 【Java学习笔记之十二】Java8增强的工具类:Arrays的用法整理总结
- 利用insert,update和delete注入获取数据
- 【机器学习笔记之二】决策树的python实现
- 【Java学习笔记之十三】初探Java面向对象的过程及代码实现
- 洛谷 P1308 统计单词数【字符串+模拟】
- 【Java学习笔记之十四】Java中this用法小节
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Linux之PAM系统模块详解说明
- 快速上手联邦学习——腾讯自研联邦学习平台PowerFL实战
- Linux发行版的镜像网站及开源软件收集
- 自建图床应用,我只推荐 Serverless
- 手把手教你使用 Nginx Ingress 实现金丝雀发布
- Kettle构建Hadoop ETL实践(六):数据转换与装载
- 从面试角度一文学完 Kafka
- Kettle构建Hadoop ETL实践(七):定期自动执行ETL作业
- 轻松理解JVM的分代模型
- Mybatis的几种传参方式,你了解多少?
- 搭建NFS Server
- Paxos 分布式必问的内容,没有之一
- Java进阶训练营 第一周JVM 预习笔记
- LeetCode905. 按奇偶排序数组 题解
- 试用 Azure Sql 数据库