@Override public boolean removeByValue(V value, int[] keyArr){ final int index = mMap.indexOfValue(value, false); if(index < 0){ return false; } if(keyArr != null) { keyArr[0] = mMap.keyAt(index); } mMap.removeAt(index); return true; }
@Override public SparseArray<T> read(JsonReader in) throws IOException { SparseArray<T> map = new SparseArray<>(); in.beginObject(); while (in.hasNext()){ String name = in.nextName(); map.put(Integer.parseInt(name), mAdapter.read(in)); } in.endObject(); return map; }
static SparseArray readSparseArray0(Parcel in, ClassLoader loader) { int N = in.readInt(); if (N < 0) { return null; } SparseArray sa = new SparseArray(N); readSparseArrayInternal(in, sa, N, loader); return sa; } static void readSparseArrayInternal(Parcel in, SparseArray outVal, int N,
@Override public V get(int key) { return mMap.get(key); } }
/** * convert the target object to json. currently support simple object, array , list. SparseArray * @param t the object. must have annotation {@linkplain JsonAdapter} * @return the json string. * @see SparseArray */ public static String toJson(Object t) { GsonBuilder builder = new GsonBuilder() .setVersion(GlobalSetting.getDefault().getGsonVersion()); if(t instanceof SparseArray){ SparseArray sa = (SparseArray) t; if(sa.size() == 0){ return "{}"; } Class<?> clazz = sa.valueAt(0).getClass(); /* builder.registerTypeAdapter( TypeToken.getParameterized(SparseArray.class, clazz).getType(), new SparseArrayTypeAdapter<>(TypeHandler.getTypeAdapter(clazz)));*/ builder.registerTypeAdapter(SparseArray.class, new SparseArrayTypeAdapter<>(TypeHandler.getTypeAdapter(clazz))); } return builder.create().toJson(t); }
@Override public void addStaticClass(String alias, Class<?> clazz) { staticMap.put(alias.hashCode(), clazz); } @Override
@Override public int size() { return mMap.size(); }
@Override public int keyAt(int index) { return mMap.keyAt(index); }
@Override public V valueAt(int index) { return mMap.valueAt(index); }
@Override public V remove(int key) { return mMap.getAndRemove(key); } @Override
public TestGsonBean() { doubelSparse = new SparseArray<>(); doubelSparse.put(1, 1.6); doubelSparse.put(2, 2.6); }
/** * clear all key-values . * @return this. */ public SparseArrayPropertyEditor<D, V> clear(){ final int size = mMap.size(); if(size == 0){ return this; } SparseArray<V> newMap = new SparseArray<>(size * 4 /3 + 1); mMap.clearTo(DataMediatorDelegate.getDefault().getSparseArrayDelegate(newMap)); if(mMediator != null){ mMediator._getSparseArrayDispatcher().dispatchClearEntries(mProperty, newMap); } return this; }
@Override public V get(int key) { return mMap.get(key); } }
@Override public boolean removeByValue(V value, int[] keyArr){ final int index = mMap.indexOfValue(value, false); if(index < 0){ return false; } if(keyArr != null) { keyArr[0] = mMap.keyAt(index); } mMap.removeAt(index); return true; }
@Override public void addVariable(String alias, Object obj){ varMap.put(alias.hashCode(), obj); } @Override
@Override public int size() { return mMap.size(); }
@Override public int keyAt(int index) { return mMap.keyAt(index); }