package gueei.binding.v30.viewAttributes.absListView; import gueei.binding.CollectionChangedEventArg; import gueei.binding.CollectionChangedEventArg.Action; import gueei.binding.collections.ObservableCollection; import java.util.ArrayList; import java.util.Map; import java.util.Map.Entry; import android.util.SparseBooleanArray; public class ItemPositionsObservable extends ObservableCollection<Boolean>{ private SparseBooleanArray arr = new SparseBooleanArray(); public Boolean getItem(int position) { return arr.valueAt(position); } public void onLoad(int position) { } public Class<Boolean> getComponentType() { return Boolean.class; } public int size() { return arr.size(); } public void clear(){ CollectionChangedEventArg arg = new CollectionChangedEventArg(Action.Reset); arr.clear(); notifyCollectionChanged(arg); } public void put(int key, boolean value){ arr.put(key, value); notifyCollectionChanged(new CollectionChangedEventArg(Action.Add, key)); } public void putAll(Map<Integer, Boolean> values){ for(Entry<Integer, Boolean> set : values.entrySet()){ arr.put(set.getKey(), set.getValue()); } notifyCollectionChanged(new CollectionChangedEventArg(Action.Add, values.keySet())); } public void replaceAll(SparseBooleanArray newArr, Object initiator){ arr = Helper.cloneSBArray(newArr); ArrayList<Object> initiators = new ArrayList<Object>(); initiators.add(initiator); notifyCollectionChanged(new CollectionChangedEventArg(Action.Reset), initiators); } public void delete(int key){ arr.delete(key); notifyCollectionChanged(new CollectionChangedEventArg(Action.Remove, key)); } public int indexOfKey(int key){ return arr.indexOfKey(key); } public int indexOfValue(boolean value){ return arr.indexOfValue(value); } public int keyAt(int index){ return arr.keyAt(index); } public boolean valueAt(int index){ return arr.valueAt(index); } public boolean get(int key){ return arr.get(key, false); } public boolean get(int key, boolean valueIfKeyNotFound){ return arr.get(key, valueIfKeyNotFound); } public boolean isNull() { return false; } }