正如标题所说,我很难理解registerDataSetObserver
在Constructor
cwac-adapter
中的用
/**
* Constructor wrapping a supplied ListAdapter
*/
public AdapterWrapper(ListAdapter wrapped) {
super();
this.wrapped=wrapped;
wrapped.registerDataSetObserver(new DataSetObserver() {
public void onChanged() {
notifyDataSetChanged();
}
public void onInvalidated() {
notifyDataSetInvalidated();
}
});
}
这不会创建对notifyDataSetChanged()
的递归调用吗?
我的理解是,notifyDataSetChanged()
会召集Adapter
的所有注册观察员onChanged
.因此,在onChanged()
中调用notifyDataSetChanged()
将创建递归调用。
我的理解是错误的吗?如果是,这里到底发生了什么?如果不是,有这样的递归调用有什么用?
您有两个适配器,我们称它们为 List 和 Wrapper。当您在列表中收到更改时,您会通知包装器。不再执行代码。