Android在自定义类中实现自定义 * 方式
作者:Simon_Qi 时间:2023-06-17 08:37:34
* 可以说是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);
}
}
}
来源:https://blog.csdn.net/u010403463/article/details/41820423
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
GraalVM native-image编译后quarkus的超音速启动
![](https://img.aspxhome.com/file/2023/1/122331_0s.png)
MyBatis实现模糊查询的几种方式
![](https://img.aspxhome.com/file/2023/9/92699_0s.png)
SpringBoot 嵌入式web容器的启动原理详解
![](https://img.aspxhome.com/file/2023/8/64908_0s.png)
浅谈Java实现面向对象编程java oop
![](https://img.aspxhome.com/file/2023/7/88197_0s.png)
Java针对ArrayList自定义排序的2种实现方法
Java使用通配符实现增强泛型详解
![](https://img.aspxhome.com/file/2023/2/60282_0s.png)
详解C#中使用对象或集合的初始值设定项初始化的操作
Android转场效果实现示例浅析
HttpsURLConnection上传文件流(实例讲解)
Springboot日志开启SLF4J过程解析
如何在Spring Boot应用中优雅的使用Date和LocalDateTime的教程详解
springboot返回前端中文乱码的解决
Spring集成Redis详解代码示例
![](https://img.aspxhome.com/file/2023/1/94341_0s.jpg)
SpringCloud @RefreshScope注解源码层面深入分析
![](https://img.aspxhome.com/file/2023/9/108389_0s.png)
java ThreadLocal使用案例详解
![](https://img.aspxhome.com/file/2023/9/72319_0s.jpg)
C#中的委托介绍
![](https://img.aspxhome.com/file/2023/6/77296_0s.png)
java基础之NIO介绍及使用
![](https://img.aspxhome.com/file/2023/2/63672_0s.jpg)
Unity3D启动外部程序并传递参数的实现
![](https://img.aspxhome.com/file/2023/3/96353_0s.jpg)