Android ListView与BaseAdapter的观察者模式实现:
1、BsaeAdapter持有被观察者的引用:
private final DataSetObservablemDataSetObservable = new DataSetObservable();
DataSetObservable继承了一个泛形的被观察者类
2、ListView 继承了AbsListView,而AbsListView 定义了观察者类,并持有观察者引用,而ListView setAdapter(ListAdapter adapter)方法里,adapter(mAdapter)注册了ListView对象的观察者类:
mDataSetObserver = newAdapterDataSetObserver();
mAdapter.registerDataSetObserver(mDataSetObserver);
3、接下来Adapter(被观察者)状态发生变化,便可通知观察者mDataSetObserver
附观察者模式UML图: