原地址:http://blog.csdn.net/fancylovejava/article/details/49947697
Android SDK源码中用到了很多开发模式,其中BaseAdapter就属于观察者模式
中有DataSetObservable可被观察到的对象即被观察对象,这个对象将观察者对象加入到自己的观察者对象集中
每次改变ListView的数据的时候,需要notifyDataSetChanged,这个实现是 mDataSetObservable.notifyChanged();
被观察者对象调用方法
然后观察者对象在onChanged方法中去处理。
还有个问题,registerDataSetObserver(DataSetObserver observer)什么时候被调用的
看源码发现原来是在ListView的setAdapter方法中调用的
看到里面初始化了一个对象AdapterDataSetObserver,这个对象在AbsListView里的内部类
实现了具体的onChanged方法,好了,基本理清楚Adapter里面怎么通知更新数据了。
但是上面有个FastScroller对象,这个类找了半天没找到在哪,在GC上搜说在android.widget包下,但是并没有。
有知道是为什么得吗?麻烦请教一下!
最后补充看RecycleView的源码,里面也是观察者模式,但是整体感觉RecycleView比ListView更好!有空可以学习学习