Solución:
Type Converter están hechos específicamente para eso. En su caso, puede utilizar el fragmento de código que se proporciona a continuación para almacenar datos en la base de datos.
public class Converters {
@TypeConverter
public static ArrayList<String> fromString(String value) {
Type listType = new TypeToken<ArrayList<String>>() {}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String fromArrayList(ArrayList<String> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
}
Y menciona esta clase en tu Room DB así
@Database (entities = {MainActivityData.class},version = 1)
@TypeConverters({Converters.class})
Más info aquí
Opción n. ° 1: tener MyListItems
frijol @Entity
, como MainActivityData
es. MyListItems
establecería un @ForeignKey
de regreso MainActivityData
. En este caso, sin embargo, MainActivityData
no puede tener private ArrayList<MyListItems> myListItems
, como en Room, las entidades no se refieren a otras entidades. Un modelo de vista o una construcción POJO similar podría tener una MainActivityData
y su asociado ArrayList<MyListItems>
, aunque.
Opción n. ° 2: configure un par de @TypeConverter
métodos para convertir ArrayList<MyListItems>
hacia y desde algún tipo básico (por ejemplo, un String
, como usar JSON como formato de almacenamiento). Ahora, MainActivityData
puede tener su ArrayList<MyListItems>
directamente. Sin embargo, no habrá una tabla separada para MyListItems
, por lo que no puede consultar MyListItems
muy bien.
Kotlin versión para convertidor de tipo:
class Converters {
@TypeConverter
fun listToJson(value: List<JobWorkHistory>?) = Gson().toJson(value)
@TypeConverter
fun jsonToList(value: String) = Gson().fromJson(value, Array<JobWorkHistory>::class.java).toList()
}
Solía JobWorkHistory
objeto para mi propósito, usa el objeto tuyo
@Database(entities = arrayOf(JobDetailFile::class, JobResponse::class), version = 1)
@TypeConverters(Converters::class)
abstract class MyRoomDataBase : RoomDatabase() {
abstract fun attachmentsDao(): AttachmentsDao
}