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
猜你喜欢
- 前言毕业季来临,很多小伙伴在忙于考公或者准备研究生复试等工作,因此从网上下载或者购买了源码。源码在本地运行成功之后,想要稍微修改一下,结果发
- Android canvas drawBitmap方法详解及实例之前自己在自定义view,用到canvas.drawBitmap
- 高斯模糊高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像
- iOS中有封装好的选择图片后长按出现动画删除效果,效果如下 而Android找了很久都没有找到有这样效果的第三方组件,
- 本文实例为大家分享了Java实现简单猜拳游戏的具体代码,供大家参考,具体内容如下看网上的猜拳游戏那么多,但都是用switch输入数字,所以用
- ActiviryThreadActivityThread的初始化ActivityThread即Android的主线程,也就是UI线程,Act
- 使用@Async异步调用方法Async简介异步方法调用使用场景:处理日志、发送邮件、短信......spring中提供了@Async来实现异
- 本文主要为大家分享了MyEclipse中安装使用Maven的方法,供大家参考,具体内容如下Step1:下载mavenhttp://maven
- 我们在常用的电商或者旅游APP中,例如美团,手机淘宝等等,都能够看的到有那种下拉式的二级列表菜单。具体如图所示:上面两张图就是美团的一个二级
- 前言本文主要讲述如何在同一个窗体内,实现不同功能模块的页面切换。一、准备工作1.搭建一个简单的mvvm项目结构首先搭建一个简单的项目框架,然
- 编程是一门艺术,大批量的改动显然是非常丑陋的做法,用心的琢磨写的代码让它变的更美观。在软件开发系统中,**“方法的请求者
- 本文实例为大家分享了Java测试网络连通性的方法,供大家参考,具体内容如下第一种方式:利用java运行时: Java代码 /** * tes
- 一、项目简述功能: 前后用户的登录注册,婚纱照片分类,查看,摄影师预 订,后台订单管理,图片管理等等。二、项目运行环境配置: Jdk1.8
- 前言:线程池是一个非常重要的知识点,也是池化技术的一个典型应用,相信很多人都有使用线程池的经历,但是对于线程池的实现原理大家都了解吗?本篇文
- Google的在Google I/O大会上推出了一款新的开发工具android studio。这是一款基于intellij IDE的开发工具
- 我们经常在项目开放中需要进行很多配置, 那么这些配置基本上都是动态的, 如果我直接写在代码中, 修改起来很麻烦, 如果该配置在多处进行引用啦
- spring boot ${}占位符不起作用问题:在 pom.xml 文件里定义好属性标签,然后在 properties或者xml 中使用$
- Java8 LocalDateTime与timestamp转换将timestamp转为LocalDateTimepublic LocalDa
- 传值(by value)与传址(by reference)分别为普通传递参数方式与ref声明方式,传址方式在使用前需要ref关键词修饰;ou
- 本文实例为大家分享了java实现斗地主发牌的具体代码,供大家参考,具体内容如下参考斗地主的游戏规则,完成一个发牌的功能(54张牌,考虑点数,