自定义观察者模式实现对状态的监听
来源:互联网 发布:汉客和爱华仕 知乎 编辑:程序博客网 时间:2024/05/16 12:33
这里我主要分为4个步骤
定义被观察者Observabler接口
public interface MainTvClick { void onChangeListener(String string);}
创建观察者集合
//观察者集合List<MainTvClick> mainTvClickList = new LinkedList<>();
添加观察者
/** * 添加观察者 * * @param observer */public void addObserver(MainTvClick observer) { if (null == observer) { throw new NullPointerException("observer == null"); } synchronized (this) { if (!mainTvClickList.contains(observer)) { mainTvClickList.add(observer); } }}
删除观察者
/** * 删除观察者 * * @param observr */public synchronized void deleteMainObserver(MainTvClick observr) { mainTvClickList.remove(observr);}
通知观察者
/** * 通知观察者 * * @param info */ public void notifyMainObserver(String info) { for (MainTvClick observer : mainTvClickList) { observer.onChangeListener(info); } }
记得单例哟
public static MainActivity instance;/** * 单例 * * @return */public static MainActivity getInstance() { if (instance == null) { synchronized (MainActivity.class) { if (instance == null) { instance = new MainActivity(); } } } return instance;}
接下来就是使用了.
实现观察者 并且添加到 集合中
public class HomeFragment extends BaseFragment implements MainActivity.MainTvClick {...这里其实就是实现接口方法 fragment = new HomeFragment();// HomeFragment fragment1 = new HomeFragment(); MainActivity.getInstance().addObserver((MainActivity.MainTvClick) fragment);
被观察者做出改变,通知观察者
mToolbarTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MainActivity.getInstance().notifyMainObserver("234"); }});
╔════════════════════════════════════════════════════════════════════════════════════════
1 ║ Thread: main
1 ╟────────────────────────────────────────────────────────────────────────────────────────
1 ║ APPFragment.onChangeListener (APPFragment.java:72)
1 ║ Logger.e (Logger.java:106)
1 ╟────────────────────────────────────────────────────────────────────────────────────────
11-24 13:34:31.936 11226-11226/com.tescoo.aat E/debugTAG: ║ 234
可以看到打印出来234了
0 0
- 自定义观察者模式实现对状态的监听
- 使用观察者模式Observer实现对Android网络状态的监听
- 利用接口实现自定义监听事件以及观察者模式
- 观察者模式,Fragment监听Activity状态变化
- 观察者模式(事件监听实现)
- 对观察者模式的理解
- 设计模式学习----观察者模式(事件监听实现)
- 设计模式学习----观察者模式(事件监听实现)
- 设计模式学习----观察者模式(事件监听实现)
- 设计模式学习----观察者模式(事件监听实现)
- Android自定义View之用观察者模式写自定义监听事件以及常用竖直型字母索引栏的写法
- U3D观察者模式,实现1对多
- 通过观察者模式监听媒体库的变化实现APP本地数据自动更新
- JAVA提供的对观察者模式的支持(观察者模式)
- 观察者模式和监听模式
- 对ListView滚动状态的监听
- 对ListView滚动状态的监听
- javax swing 事件监听学到的设计模式 观察者模式
- for+对网络的一点点
- java基础13(Javaoo8)——常用类
- bzoj2325 [ZJOI2011]道馆之战
- eps_MATLAB
- 第1章 注重实效的哲学
- 自定义观察者模式实现对状态的监听
- 旋转数组的最下数字
- 字符串数组的两种存储方式
- spark 核心作业调度和任务调度
- win7/win10 + VS2015 + cocos2dx-3.13的win32环境配置 与 项目编译时间优化和项目精简
- 数据结构排序算法——希尔排序
- upper_bound()和lower_bound()
- 自定义弹出AlertDialog弹出框
- Ubuntu 14.04 Web服务器--Apache的安装和配置