在ListAdapter当中需要实现一个3个方法,baseAdapter是这样实现的
public void registerDataSetObserver(DataSetObserver observer) { mDataSetObservable.registerObserver(observer); } public void unregisterDataSetObserver(DataSetObserver observer) { mDataSetObservable.unregisterObserver(observer); }
public void notifyDataSetChanged() { mDataSetObservable.notifyChanged(); }
这让我们很容易联想到观察者或者叫坚挺着模式。这是一种什么模式呢:
mDataSetObservable就是一个存储所有观察者的数据集合,用于监听适配器当中数据的变化
public class DataSetObservable extends Observable<DataSetObserver>
Obeserveable是一个抽象类。
public abstract class Observable<T>
观察者观察数据的变化,来进行相应的操作,需要继承DataSetObserver类,
当数据变化的时候,这两个函数将会被调用
public void onChanged() { // Do nothing } public void onInvalidated() { // Do nothing }而这实现的原理在于,DataSetObservable类当中,notifyChanged和notifyInvalidated中,调用了每一个观察者的onChange()和onInvalidated()方法。