108a079c3d2857e365736432b2691187767eb116fScott Kennedy/* 208a079c3d2857e365736432b2691187767eb116fScott Kennedy * Copyright (C) 2013 The Android Open Source Project 308a079c3d2857e365736432b2691187767eb116fScott Kennedy * 408a079c3d2857e365736432b2691187767eb116fScott Kennedy * Licensed under the Apache License, Version 2.0 (the "License"); 508a079c3d2857e365736432b2691187767eb116fScott Kennedy * you may not use this file except in compliance with the License. 608a079c3d2857e365736432b2691187767eb116fScott Kennedy * You may obtain a copy of the License at 708a079c3d2857e365736432b2691187767eb116fScott Kennedy * 808a079c3d2857e365736432b2691187767eb116fScott Kennedy * http://www.apache.org/licenses/LICENSE-2.0 908a079c3d2857e365736432b2691187767eb116fScott Kennedy * 1008a079c3d2857e365736432b2691187767eb116fScott Kennedy * Unless required by applicable law or agreed to in writing, software 1108a079c3d2857e365736432b2691187767eb116fScott Kennedy * distributed under the License is distributed on an "AS IS" BASIS, 1208a079c3d2857e365736432b2691187767eb116fScott Kennedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1308a079c3d2857e365736432b2691187767eb116fScott Kennedy * See the License for the specific language governing permissions and 1408a079c3d2857e365736432b2691187767eb116fScott Kennedy * limitations under the License. 1508a079c3d2857e365736432b2691187767eb116fScott Kennedy */ 1608a079c3d2857e365736432b2691187767eb116fScott Kennedypackage com.android.mail.utils; 1708a079c3d2857e365736432b2691187767eb116fScott Kennedy 1808a079c3d2857e365736432b2691187767eb116fScott Kennedyimport android.database.DataSetObservable; 1908a079c3d2857e365736432b2691187767eb116fScott Kennedyimport android.support.v4.util.SparseArrayCompat; 2008a079c3d2857e365736432b2691187767eb116fScott Kennedy 2108a079c3d2857e365736432b2691187767eb116fScott Kennedypublic class ObservableSparseArrayCompat<E> extends SparseArrayCompat<E> { 2208a079c3d2857e365736432b2691187767eb116fScott Kennedy private final DataSetObservable mDataSetObservable; 2308a079c3d2857e365736432b2691187767eb116fScott Kennedy 2408a079c3d2857e365736432b2691187767eb116fScott Kennedy public ObservableSparseArrayCompat() { 2508a079c3d2857e365736432b2691187767eb116fScott Kennedy super(); 2608a079c3d2857e365736432b2691187767eb116fScott Kennedy 2708a079c3d2857e365736432b2691187767eb116fScott Kennedy mDataSetObservable = new DataSetObservable(); 2808a079c3d2857e365736432b2691187767eb116fScott Kennedy } 2908a079c3d2857e365736432b2691187767eb116fScott Kennedy 3008a079c3d2857e365736432b2691187767eb116fScott Kennedy public ObservableSparseArrayCompat(final int initialCapacity) { 3108a079c3d2857e365736432b2691187767eb116fScott Kennedy super(initialCapacity); 3208a079c3d2857e365736432b2691187767eb116fScott Kennedy 3308a079c3d2857e365736432b2691187767eb116fScott Kennedy mDataSetObservable = new DataSetObservable(); 3408a079c3d2857e365736432b2691187767eb116fScott Kennedy } 3508a079c3d2857e365736432b2691187767eb116fScott Kennedy 3608a079c3d2857e365736432b2691187767eb116fScott Kennedy public DataSetObservable getDataSetObservable() { 3708a079c3d2857e365736432b2691187767eb116fScott Kennedy return mDataSetObservable; 3808a079c3d2857e365736432b2691187767eb116fScott Kennedy } 3908a079c3d2857e365736432b2691187767eb116fScott Kennedy 4008a079c3d2857e365736432b2691187767eb116fScott Kennedy private void notifyChanged() { 4108a079c3d2857e365736432b2691187767eb116fScott Kennedy mDataSetObservable.notifyChanged(); 4208a079c3d2857e365736432b2691187767eb116fScott Kennedy } 4308a079c3d2857e365736432b2691187767eb116fScott Kennedy 4408a079c3d2857e365736432b2691187767eb116fScott Kennedy @Override 4508a079c3d2857e365736432b2691187767eb116fScott Kennedy public void append(final int key, final E value) { 4608a079c3d2857e365736432b2691187767eb116fScott Kennedy super.append(key, value); 4708a079c3d2857e365736432b2691187767eb116fScott Kennedy notifyChanged(); 4808a079c3d2857e365736432b2691187767eb116fScott Kennedy } 4908a079c3d2857e365736432b2691187767eb116fScott Kennedy 5008a079c3d2857e365736432b2691187767eb116fScott Kennedy @Override 5108a079c3d2857e365736432b2691187767eb116fScott Kennedy public void clear() { 5208a079c3d2857e365736432b2691187767eb116fScott Kennedy super.clear(); 5308a079c3d2857e365736432b2691187767eb116fScott Kennedy notifyChanged(); 5408a079c3d2857e365736432b2691187767eb116fScott Kennedy } 5508a079c3d2857e365736432b2691187767eb116fScott Kennedy 5608a079c3d2857e365736432b2691187767eb116fScott Kennedy @Override 5708a079c3d2857e365736432b2691187767eb116fScott Kennedy public void delete(final int key) { 5808a079c3d2857e365736432b2691187767eb116fScott Kennedy super.delete(key); 5908a079c3d2857e365736432b2691187767eb116fScott Kennedy notifyChanged(); 6008a079c3d2857e365736432b2691187767eb116fScott Kennedy } 6108a079c3d2857e365736432b2691187767eb116fScott Kennedy 6208a079c3d2857e365736432b2691187767eb116fScott Kennedy @Override 6308a079c3d2857e365736432b2691187767eb116fScott Kennedy public void put(final int key, final E value) { 6408a079c3d2857e365736432b2691187767eb116fScott Kennedy super.put(key, value); 6508a079c3d2857e365736432b2691187767eb116fScott Kennedy notifyChanged(); 6608a079c3d2857e365736432b2691187767eb116fScott Kennedy } 6708a079c3d2857e365736432b2691187767eb116fScott Kennedy 6808a079c3d2857e365736432b2691187767eb116fScott Kennedy @Override 6908a079c3d2857e365736432b2691187767eb116fScott Kennedy public void remove(final int key) { 7008a079c3d2857e365736432b2691187767eb116fScott Kennedy super.remove(key); 7108a079c3d2857e365736432b2691187767eb116fScott Kennedy notifyChanged(); 7208a079c3d2857e365736432b2691187767eb116fScott Kennedy } 7308a079c3d2857e365736432b2691187767eb116fScott Kennedy 7408a079c3d2857e365736432b2691187767eb116fScott Kennedy @Override 7508a079c3d2857e365736432b2691187767eb116fScott Kennedy public void removeAt(final int index) { 7608a079c3d2857e365736432b2691187767eb116fScott Kennedy super.removeAt(index); 7708a079c3d2857e365736432b2691187767eb116fScott Kennedy notifyChanged(); 7808a079c3d2857e365736432b2691187767eb116fScott Kennedy } 7908a079c3d2857e365736432b2691187767eb116fScott Kennedy 8008a079c3d2857e365736432b2691187767eb116fScott Kennedy @Override 8108a079c3d2857e365736432b2691187767eb116fScott Kennedy public void removeAtRange(final int index, final int size) { 8208a079c3d2857e365736432b2691187767eb116fScott Kennedy super.removeAtRange(index, size); 8308a079c3d2857e365736432b2691187767eb116fScott Kennedy notifyChanged(); 8408a079c3d2857e365736432b2691187767eb116fScott Kennedy } 8508a079c3d2857e365736432b2691187767eb116fScott Kennedy 8608a079c3d2857e365736432b2691187767eb116fScott Kennedy @Override 8708a079c3d2857e365736432b2691187767eb116fScott Kennedy public void setValueAt(final int index, final E value) { 8808a079c3d2857e365736432b2691187767eb116fScott Kennedy super.setValueAt(index, value); 8908a079c3d2857e365736432b2691187767eb116fScott Kennedy notifyChanged(); 9008a079c3d2857e365736432b2691187767eb116fScott Kennedy } 9108a079c3d2857e365736432b2691187767eb116fScott Kennedy} 92