public final void notifyItemInserted(int position) {
mObservable.notifyItemRangeInserted(position, 1);
}
那这个mObservable到底是什么东西呢?阅读Adapter里面的代码可知,它是里面的一个成员变量,继承于Observable
public static abstract class Adapter<VH extends ViewHolder> {
private final AdapterDataObservable mObservable = new AdapterDataObservable();
}
我们先来看Observable里面的代码,我们知道这是一个典型的观察者模式的实现。
如果对观察者模式还不了解的,建议先阅读这篇文章:观察者设计模式 Vs 事件委托(java)
public abstract class Observable<T> {
_/**
-
The list of observers. An observer can be in the list at most
-
once and will never be null.
*/_
protected final ArrayList mObservers = new ArrayList();
_/**
-
Adds an observer to the list. The observer cannot be null and it must not already
-
be registered.
-
@param observer the observer to register
-
@throws IllegalArgumentException the observer is null
-
@throws IllegalStateException the observer is already registered
*/_
public void registerObserver(T observer) {
if (observer == null) {
throw new IllegalArgumentException(“The observer is null.”);
}
synchronized(mObservers) {
if (mObservers.contains(observer)) {
throw new IllegalStateExcep