Realm当前不支持存储基元列表。它在他们的待办事项清单上(GitHub问题#575),但与此同时,这是一种解决方法。
为您的原始类型创建一个新类,该类使用Integer,但将其更改为要存储的任何内容。
public class RealmInteger extends RealmObject { private int val; public RealmInteger() { } public RealmInteger(int val) { this.val= val; } // 吸气剂和二传手 }
您现在可以在中使用它RealmObject。
public class MainObject extends RealmObject { private String name; private RealmList<RealmInteger> ints; // 吸气剂和二传手 }
如果要GSON用来填充RealmObject,则需要添加一个自定义类型适配器。
Type token = new TypeToken<RealmList<RealmInteger>>(){}.getType(); Gson gson = new GsonBuilder() .setExclusionStrategies(new ExclusionStrategy() { @Override public boolean shouldSkipField(FieldAttributes f) { return f.getDeclaringClass().equals(RealmObject.class); } @Override public boolean shouldSkipClass(Class<?> clazz) { return false; } }) .registerTypeAdapter(token, new TypeAdapter<RealmList<RealmInteger>>() { @Override public void write(JsonWriter out, RealmList<RealmInteger> value) throws IOException { // 空的 } @Override public RealmList<RealmInteger> read(JsonReader in) throws IOException { RealmList<RealmInteger> list = new RealmList<RealmInteger>(); in.beginArray(); while (in.hasNext()) { list.add(new RealmInteger(in.nextInt())); } in.endArray(); return list; } }) .create();