ListView类,当我们设置Adapter的时候,注册了观察者:
public void setAdapter(ListAdapter adapter) {
。。。
//AdapterDataSetObserver是ListView的基类AdapterView的内部类
mDataSetObserver = new AdapterDataSetObserver();
mAdapter.registerDataSetObserver(mDataSetObserver); //注册一个观察者
。。。
requestLayout();//更新视图
}
ListAdapter是一接口,BaseAdapter继承了它。notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容,会重绘控件(还原到初始状态)。
notifyDataSetInvalidated 每当发现数据集监控有改变的情况,比如该数据集不再有效,就会调用此方法,重绘当前可见区域。
public