package org.robobinding.itempresentationmodel; import java.util.Set; import org.robobinding.util.Sets; /** * @since 1.0 * @author Cheng Wei * */ public class DataSetChangeListeners { private final Set<DataSetChangeListener> listeners; public DataSetChangeListeners() { this.listeners = Sets.newLinkedHashSet(); } public void add(DataSetChangeListener listener) { listeners.add(listener); } public boolean remove(DataSetChangeListener listener) { return listeners.remove(listener); } public boolean contains(DataSetChangeListener listener) { return listeners.contains(listener); } public void notifyChanged(DataSetObservable sender) { for (DataSetChangeListener listener : listeners) { listener.onChanged(sender); } } public void notifyItemChanged(DataSetObservable sender, int position) { for (DataSetChangeListener listener : listeners) { listener.onItemChanged(sender, position); } } public void notifyItemInserted(DataSetObservable sender, int position) { for (DataSetChangeListener listener : listeners) { listener.onItemInserted(sender, position); } } public void notifyItemRemoved(DataSetObservable sender, int position) { for (DataSetChangeListener listener : listeners) { listener.onItemRemoved(sender, position); } } public void notifyItemMoved(DataSetObservable sender, int fromPosition, int toPosition) { for (DataSetChangeListener listener : listeners) { listener.onItemMoved(sender, fromPosition, toPosition); } } public void notifyItemRangeChanged(DataSetObservable sender, int positionStart, int itemCount) { for (DataSetChangeListener listener : listeners) { listener.onItemRangeChanged(sender, positionStart, itemCount); } } public void notifyItemRangeInserted(DataSetObservable sender, int positionStart, int itemCount) { for (DataSetChangeListener listener : listeners) { listener.onItemRangeInserted(sender, positionStart, itemCount); } } public void notifyItemRangeRemoved(DataSetObservable sender, int positionStart, int itemCount) { for (DataSetChangeListener listener : listeners) { listener.onItemRangeRemoved(sender, positionStart, itemCount); } } }