in DataBindingDataBoundList/app/src/main/java/com/example/android/databoundlist/ListBindingAdapters.java [63:94]
public static <T> void setEntries(ViewGroup viewGroup,
List<T> oldEntries, int oldLayoutId,
List<T> newEntries, int newLayoutId) {
if (oldEntries == newEntries && oldLayoutId == newLayoutId) {
return; // nothing has changed
}
EntryChangeListener listener =
ListenerUtil.getListener(viewGroup, R.id.entryListener);
if (oldEntries != newEntries && listener != null && oldEntries instanceof ObservableList) {
((ObservableList)oldEntries).removeOnListChangedCallback(listener);
}
if (newEntries == null) {
viewGroup.removeAllViews();
} else {
if (newEntries instanceof ObservableList) {
if (listener == null) {
listener =
new EntryChangeListener(viewGroup, newLayoutId);
ListenerUtil.trackListener(viewGroup, listener,
R.id.entryListener);
} else {
listener.setLayoutId(newLayoutId);
}
if (newEntries != oldEntries) {
((ObservableList)newEntries).addOnListChangedCallback(listener);
}
}
resetViews(viewGroup, newLayoutId, newEntries);
}
}