android源码---ListView的notifyDataSetChanged()源码

1.调用
android源码---ListView的notifyDataSetChanged()源码
2.在BaseAdapter中很明显发现是订阅者模式
android源码---ListView的notifyDataSetChanged()源码
在这里创建了被观察者者对象
android源码---ListView的notifyDataSetChanged()源码
3.具体的被观察者类,当有变化的时候就通过notifyChanged()方法通知注册的观察者。
android源码---ListView的notifyDataSetChanged()源码
4.抽象的被观察者类.这里完全是正规的观察者模式的写法,包含了观察者的注册,解注册。并且里面也是利用了ArrayList进行观察者的存储。
android源码---ListView的notifyDataSetChanged()源码
android源码---ListView的notifyDataSetChanged()源码
5.在BaseAdapter中进行暴露观察者的注册和解注册的方法。
android源码---ListView的notifyDataSetChanged()源码
并且在ListView中setAdapter()中真正的进行调用
android源码---ListView的notifyDataSetChanged()源码
6.抽象的观察者类
android源码---ListView的notifyDataSetChanged()源码
具体的观察者类,当发起通知的时候,就会调用观察者的onChanged()方法,调用ViewGroup中的requestLayout()重新进行布局。
android源码---ListView的notifyDataSetChanged()源码