5.1,概念
当adapter中的数据更新时,会调用notifyDataSetChanged方法来刷新listview,这应该是典型的观察者模式,背后的原理是什么呢?
5.2,注册
注册流程图如下,
调用listview的setadapter方法时,开始注册, setAdapter方法部分源码如下,
mDataSetObserver = new AdapterDataSetObserver();
mAdapter.registerDataSetObserver(mDataSetObserver);
AdapterDataSetObserver是AbsListView的内部类,定义如下,
class AdapterDataSetObserver extends AdapterView<ListAdapter>.AdapterDataSetObserver {
@Override
public void onChanged() {
super.onChanged();
if (mFastScroll != null) {
mFastScroll.onSectionsChanged();
}
}
@Overri