如何通过ActiveAndroid保存List <string>?

时间:2015-11-18 12:10:23

标签: android activeandroid

我的对象中有List Strings

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

如果需要保存字符串我使用

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

但我如何通过ActiveAndroid保存(实际注释)List<String>

2 个答案:

答案 0 :(得分:3)

您可以使用数组替换您的集合并创建特定的TypeSerializer,例如使用json格式保存到db。

更多信息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;
        }
    }

答案 1 :(得分:0)

请参阅我的回答here

只需使用List< String> list = new ArrayList<>();

即可

无需担心创建其他对象。

对我而言,这是保存List&lt;最简单的方法。串GT;在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;
    }
}