写在前面
关于 ViewPager,我准备写一个系列。我水平也不咋地,估计有不少纰漏,各位爱看不看:
知识点
上回说到PagerAdapter
这个类以及setAdapter()
和populate()
如何在数据变化时重建和销毁页面。本节我们继续来看PagerAdapter
,体味一下 android 中典型的观察者模式。其中涉及这几个类:
- Observable
- DataSetObservable
- DataSetObserver
- ViewPager.PagerObserver
源码分析
关于这个观察者模式的架构,我们来看张图:
我们可以在图中看出,PagerAdapter
的观察者模式是基于Observable
和DataSetObserver
这两个基类。事实上,不管ListView
还是RecyclerView
的Adapter
都是基于它们。考虑到ListView
、RecyclerView
也是极其常用的控件,了解该观察者模式的实现很有必要。
通常意义上的Observable
,和Observer
长这样:
public class Observable{
private List mObservers; // 一堆 observer
public void notifyChanged(); // 遍历 mObservers, 依次回调 observer.onChange()
public void registerObserver(Observer observer); // 注册: mObservers.add(observer)
public void unregisterObserver(Observer observer); // 移除: mObservers.remove(observer)
}
public abstract class <