package info.guardianproject.pixelknot; import java.util.ArrayList; import java.util.Collection; public class ObservableArrayList<T> extends ArrayList<T> { public interface OnChangeListener { void onListChanged(ObservableArrayList list); } private OnChangeListener mOnChangeListener; public ObservableArrayList(int initialCapacity) { super(initialCapacity); } public ObservableArrayList(Collection<? extends T> c) { super(c); } public ObservableArrayList() { super(); } public void setOnChangeListener(OnChangeListener listener) { mOnChangeListener = listener; } @Override public boolean remove(Object o) { boolean ret = super.remove(o); if (ret && mOnChangeListener != null) mOnChangeListener.onListChanged(this); return ret; } @Override public T remove(int index) { T ret = super.remove(index); if (ret != null && mOnChangeListener != null) mOnChangeListener.onListChanged(this); return ret; } @Override public boolean add(T t) { boolean ret = super.add(t); if (ret && mOnChangeListener != null) mOnChangeListener.onListChanged(this); return ret; } @Override public void add(int index, T element) { super.add(index, element); if (mOnChangeListener != null) mOnChangeListener.onListChanged(this); } }