3

I have a List of Strings in my Object :

public ArrayList<String> trailersURLs = new ArrayList<>();

If need to save String I use

@Column(name = "trailer")
public String trailerUrl;

But how i can save(actually annotate) List<String> via ActiveAndroid?

Sergey Shustikov
  • 15,377
  • 12
  • 67
  • 119

2 Answers2

3

You can replace your collection with array and make specific TypeSerializer, for example saving to db with json format.

more information github.com/pardom/ActiveAndroid/wiki/Type-serializers

 public class MyClassArraySerializer extends TypeSerializer {
        private static final Gson gson = new Gson();
        @Override
        public Class<?> getDeserializedType() {
            return MyClass[].class;
        }

        @Override
        public Class<?> getSerializedType() {
            return String.class;
        }

        @Override
        public Object serialize(final Object o) {
            if (null == o) return null;
            final String json = gson.toJson(o);
            return json;
        }

        @Override
        public Object deserialize(final Object o) {
            if (null == o) return null;
            final MyClass[] myClassItems = gson.fromJson(o.toString(), MyClass[].class);
            return myClassItems;
        }
    }
Javad Jafari
  • 710
  • 6
  • 11
1

See my answer here

Just use List< String> list = new ArrayList<>();

No need to worry about to create other objects.

For me this is the easiest way to save List< String> in ActiveAndroid

public class ListGsonSerializer extends TypeSerializer {

    private final static Gson gson = new Gson();

    @Override
    public Class<?> getDeserializedType() {
        return List.class;
    }

    @Override
    public Class<?> getSerializedType() {
        return String.class;
    }

    @Override
    public String serialize(Object data) {
        if (null == data )
            return null;

        return gson.toJson(data);

    }

    @Override
    public List<String> deserialize(Object data) {
        if (null == data)
            return null;

        List<String> stringList = new ArrayList<>();
        stringList =  gson.fromJson(data.toString(), List.class);
        return stringList;
    }
}
Zeeshan
  • 1,625
  • 17
  • 25