Android中的观察者DataSetObservable和DataSetObserver
来源:互联网 发布:骤风租赁软件 编辑:程序博客网 时间:2024/06/09 17:07
原网址链接:
http://blog.csdn.net/linghu_java/article/details/17142497
Observable是观察者模式的典型应用。在Android下,Observable是一个泛型的抽象类,表示一个观察者对象,提供了观察者注册、反注册及清空三个方法,其源码如下:
- public abstract class Observable<T> {
- protected final ArrayList<T> mObservers = new ArrayList<T>();
- public void registerObserver(T observer) {
- if (observer == null) {
- throw new IllegalArgumentException("The observer is null.");
- }
- synchronized(mObservers) {
- if (mObservers.contains(observer)) {
- throw new IllegalStateException("Observer " + observer + " is already registered.");
- }
- mObservers.add(observer);
- }
- }
- public void unregisterObserver(T observer) {
- if (observer == null) {
- throw new IllegalArgumentException("The observer is null.");
- }
- synchronized(mObservers) {
- int index = mObservers.indexOf(observer);
- if (index == -1) {
- throw new IllegalStateException("Observer " + observer + " was not registered.");
- }
- mObservers.remove(index);
- }
- }
- public void unregisterAll() {
- synchronized(mObservers) {
- mObservers.clear();
- }
- }
- }
DataSetObservable在很多的Adapter中都用到,像BaseAdapter。DataSetObservable使用DataSetObserver实例化了Observable。DataSetObserver表示了一个数据集对象的观察者,主要提供了两个方法:
- public abstract class DataSetObserver {
- public void onChanged() {
- // Do nothing
- }
- public void onInvalidated() {
- // Do nothing
- }
- }
DataSetObservable实现如下:
- public class DataSetObservable extends Observable<DataSetObserver> {
- public void notifyChanged() {
- synchronized(mObservers) {
- for (DataSetObserver observer : mObservers) {
- observer.onChanged();
- }
- }
- }
- public void notifyInvalidated() {
- synchronized (mObservers) {
- for (DataSetObserver observer : mObservers) {
- observer.onInvalidated();
- }
- }
- }
- }
当数据集有变化时,会调用DataSetObserver的onChanged()方法;当数据集失效时,会调用DataSetObserver的onINvalidated()方法
0 0
- Android中的观察者DataSetObservable和DataSetObserver
- Android中的观察者DataSetObservable和DataSetObserver
- Android中的设计模式——DataSetObservable 观察者模式
- DataSetObservable,Observable<T>,DataSetObserver源码注释翻译
- Android之观察者模式源码分析(DataSetObserver)
- android ContentObserver和DatasetObserver的区别
- android 中ContentObserver和DataSetObserver的使用
- ContentObserver和DataSetObserver区别
- ContentObserver和DataSetObserver区别
- DataSetObserver
- Android之设计模式DataSetObserver
- Android中的观察者模式
- Android中的观察者模式
- Android 中的内容观察者ContentObserver
- Android 中的内容观察者ContentObserver
- Android 中的观察者模式Observer
- Android源码中的观察者模式
- Android 中的观察者模式Observer
- python decorators, classmethod and staticmethod
- IOS——仿Android自动消失的小提示窗
- 正则表达式中各种字符的含义
- (1.3.4)交换排序:冒泡排序
- centos 安装7zip
- Android中的观察者DataSetObservable和DataSetObserver
- linux修改字体
- 用循环语句输出菱形图形
- win7下IE8浏览器oracle ebs 11i打不开FORM的解决方案
- 如何理解数据库理论中的第一二三四五六七八范式?
- Java聊天室
- 第2周项目初见对象--时间类(2)
- POJ3411 Paid Roads DFS
- 创建rpm包