Как мне написать @TypeConverter так чтобы смочь сохранить в room объект, в котороам есть параметры в виде ArrayList
У меня надо чтобы 2 последних поля в объекте сохранались - это АррайЛисты Стрингов, но room не сохраняет ArrayList, мне надо Конвертер, чтобы его потом к Database подсоединить. Помогите пожалуйста написать @TypeConverter (внизу в примере), перепробовал много разных примеров.
@Entity(tableName = "inventory_table")
public class Inventory {
@PrimaryKey(autoGenerate = true)
@NonNull
private int id;
@NonNull
private String date;
@NonNull
private String q1;
@NonNull
private String q2;
@NonNull
private String tools;
@NonNull
private ArrayList<String> practiceSentenceList;
@NonNull
private ArrayList<String> answerList;
//Constructors, getters, setters
}
public class Converters {
@TypeConverter
public String fromListToString(List<String> practiceSentenceList) {
//how to write converter here;
}
@TypeConverter
public List<String> fromStringToList(String practiceSentences) {
//and whst to write here
}
}
Ответы (1 шт):
Автор решения: lampa
→ Ссылка
Либо мы соединяем его с другой таблицей, либо конвертируем, например, в json:
@Entity(tableName = "inventory_table")
public class Inventory {
@PrimaryKey(autoGenerate = true)
@NonNull
private int id;
@NonNull
private String date;
@NonNull
private String q1;
@NonNull
private String q2;
@NonNull
private String tools;
@NonNull
@TypeConverters({ListConverter.class})
private List<String> practiceSentenceList;
@NonNull
@TypeConverters({ListConverter.class})
private List<String> answerList;
}
public class ListConverter {
priavate ObjectMapper mapper = new ObjectMapper();
@TypeConverter
public String fromListToString(List<String> practiceSentenceList) throws JsonProcessingException {
return mapper.writeValueAsString(practiceSentenceList);
}
@TypeConverter
public List<String> fromStringToList(String practiceSentences) throws JsonProcessingException {
(List<String>) mapper.readValue(serializeObject, List.class)
}
}
Не проверял, но должно работать примерно так)