List of primitives RealmListIntegerString...
suggest changeRealm currently does not support storing a list of primitives. It is on their todo list (GitHub issue #575), but for the meantime, here is a workaround.
Create a new class for your primitive type, this uses Integer, but change it for whatever you want to store.
public class RealmInteger extends RealmObject { private int val; public RealmInteger() { } public RealmInteger(int val) { this.val = val; } // Getters and setters }
You can now use this in your RealmObject
.
public class MainObject extends RealmObject { private String name; private RealmList<RealmInteger> ints; // Getters and setters }
If you are using GSON
to populate your RealmObject
, you will need to add a custom type adapter.
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 { // Empty } @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();
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents