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


猜你喜欢
- 在Java中,不像Python一样直接用个input()就行的。Java控制台输入比较麻烦,下面是比较易懂的教程。首先,新建一个调用Java
- 引言一个复杂的分布式系统,用户发起一个请求,这个请求可能调用几十到几百个服务,经过很多业务层,而每个业务又是多个机器集群,一个请求具体被随机
- 1、异常分类通常分为三类:系统异常(SystemException),业务异常(BusinessException)和其他异常(Except
- 编写Job定时执行任务十分有用,能解决很多问题,这次实习的项目里做了一下系统定时更新三方系统订单状态的功能,这里用到了Spring的定时任务
- 目录RemoveSubstringReplaceSpiltJoinAppendRemoveRemove(int startIndex) 删除
- 1、修改application.properties新建 Mapper、实体类 相应的文件夹,将不同数据源的文件保存到对应的文件夹下# te
- 前言MyBatis中也提供了注解式开发⽅式,采⽤注解可以减少Sql映射⽂件的配置。 当然,使⽤注解式开发的话,sql语句是写在java程序中
- 一、关于idea中Maven的位置idea自带一个maven,其路径大致如下C:/java/IntelliJ IDEA 2020.1/plu
- 购物车项目,业务需要实现了一个购物车的项目,简单的了解下实现逻辑:数据计算等是在Adapter中计算出来的,通过在Adapter中计算出来的
- 大家都知道使用java反射可以在运行时动态改变对象的行为,甚至是private final的成员变量,但并不是所有情况下,都可以修改成员变量
- 下面提供代码示例,请参考。public boolean onKeyDown(int keyCode, KeyEvent event) {&n
- 本文实例为大家分享了Unity实现俄罗斯方块第3部分,供大家参考,具体内容如下解决穿透问题逻辑部分1、在物体进行移动的过程中更新格子的信息,
- 创建普通Maven工程导入所需依赖坐标:<dependencies> <!-- https://
- VideoView介绍之前介绍过使用MediaPlayer+SurfaceView实现播放视频功能。无意间发现官方封装了VideoView组
- 一、前序遍历1.题目描述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。2.输入输出示例示例 1:输入:root = [1,nu
- 这篇文章主要介绍了Mybatis一对多关联关系映射实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 前言用过Spring的人多多少少也都用过@Async注解,至于作用嘛,看注解名,大概能猜出来,就是在方法执行的时候进行异步执行。一、如何使用
- 需求:用TreeSet集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合;要按照总分从高到低进行排序分析:1.创建学生类 成员变
- 在开发过程中有时需要将图片显示成圆角图片,一般我们可以通过在xml中设置drawable shape即可,但今天我给出另一种方法,用java
- 实例如下:MemoryMXBean memorymbean = ManagementFactory.getMemoryMXBean(); &