@Override public int size() { return mMap.size(); }
@Override public int size() { return mMap.size(); }
@Override public void write(JsonWriter out, SparseArray<T> value) throws IOException { out.beginObject(); if(value != null) { for (int size = value.size(), i = size - 1; i >= 0; i--) { out.name(value.keyAt(i) + ""); mAdapter.write(out, value.valueAt(i)); } } out.endObject(); }
static void writeSparseArray0(Parcel in, SparseArray val) { if (val == null) { in.writeInt(-1); return; } int N = val.size(); in.writeInt(N); int i=0; while (i < N) { in.writeInt(val.keyAt(i)); in.writeValue(val.valueAt(i)); i++; } } }
@Override public void write(JsonWriter out, GsonProperty property, Object value) throws IOException { final Class<?> simpleType = property.getType(); out.beginObject(); if(value != null) { final SparseArray sa = (SparseArray) value; if(simpleType.isPrimitive() || isBoxedClass(simpleType)){ for (int size = sa.size(), i = size - 1; i >= 0; i--) { out.name(sa.keyAt(i) + ""); writePrimitiveOrItsBox(out, simpleType, sa.valueAt(i)); } }else { TypeAdapter adapter = getTypeAdapter(simpleType); for (int size = sa.size(), i = size - 1; i >= 0; i--) { out.name(sa.keyAt(i) + ""); adapter.write(out, sa.valueAt(i)); } } } out.endObject(); }
/** * 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 boolean clearTo(SparseArrayDelegate<V> out) { final int size = mMap.size(); if(size == 0){ return false; } if(out != null) { for (int i = size -1 ; i>=0 ; i--){ out.put(mMap.keyAt(i), mMap.valueAt(i), null); } } mMap.clear(); return true; }
@Override public boolean clearTo(SparseArrayDelegate<V> out) { final int size = mMap.size(); if(size == 0){ return false; } if(out != null) { for (int i = size -1 ; i>=0 ; i--){ out.put(mMap.keyAt(i), mMap.valueAt(i), null); } } mMap.clear(); return true; }
@Override public void write(JsonWriter out, SparseArray<Car3> value) throws IOException { out.beginObject(); if(value != null) { for (int size = value.size(), i = size - 1; i >= 0; i--) { out.name(value.keyAt(i) + ""); mAdapter.write(out, value.valueAt(i)); } } out.endObject(); }