package com.hci.moola.model; import java.util.Collections; @SuppressWarnings("serial") public class ObservableSortedList<T extends Comparable<? super T>> extends SortedList<T> { private ObservableListListener<T> mCallback; public void setObservableListListener(ObservableListListener<T> listener) { mCallback = listener; } @Override public boolean add(T object) { boolean result = super.add(object); if (mCallback != null) mCallback.onAdd(object); return result; } @Override public boolean remove(Object object) { int index = Collections.binarySearch(this, (T) object); if (index < 0) index = ~index; super.remove(index); if (mCallback != null) mCallback.onRemove((T) object); return true; } @Override public T set(int index, T object) { T result = super.set(index, object); if (mCallback != null) mCallback.onSet(index, result, object); return result; } public static interface ObservableListListener<T> { /** * Item has been added to this list. Do something about it son! * * @param itemAdded */ public void onAdd(T itemAdded); public void onRemove(T itemRemoved); public void onSet(int index, T oldItem, T newItem); } }