Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

683
Vistas
Base de datos de la sala de Android: no estoy seguro de cómo convertir un cursor al tipo de retorno de este método

Estoy tratando de guardar este objeto en la base de datos de Room, leí sobre Typeconverters para convertir objetos complejos en un archivo que se puede almacenar en la base de datos. Recibo este error: error: No estoy seguro de cómo convertir un Cursor al tipo de retorno de este método (androidx.lifecycle.LiveData>).---- public abstract androidx.lifecycle.LiveData> queryQuestions(@org.jetbrains.annotations. NotNull() Mi código se basa en soluciones que encontré para problemas similares con la conversión de objetos para la habitación, pero esto no funciona para mí.

Mi clase de pregunta:

 @Entity data class Question(@PrimaryKey var questionId: String = "", val uid: String, val name: String, val photo: String, val question: String, val points: Int, @ServerTimestamp val timestamp: Date? = null, val options: ArrayList<Option>){ constructor(): this("", "", "", "", "", 0, null, ArrayList()) } data class Option(val optionText: String, val correct: Boolean, var votes: Int = 0, var usersVoted: ArrayList<UserVoted> = ArrayList()){ constructor(): this("", false /*,0, ArrayList()*/) } data class UserVoted(val name: String, val photo: String){ constructor(): this("", "") }

Mi clase de dao:

 @Dao interface QuestionDao { @Insert(onConflict = REPLACE) fun insertQuestions(question: ArrayList<Question>) @Query("SELECT * FROM question WHERE uid = :userId") fun queryQuestions(userId: String): LiveData<ArrayList<Question>> }

Mi clase de base de datos:

 @Database(entities = [Question::class], version = 1) @TypeConverters(Converter::class) abstract class AppDatabase : RoomDatabase(){ abstract fun questionDao(): QuestionDao }

Mi clase de convertidor:

 class Converter { @TypeConverter fun fromTimestampToDate(value: Long?): Date? { return value?.let { Date(it) } } @TypeConverter fun fromDateToTimestamp(date: Date?): Long? { return date?.time?.toLong() } @TypeConverter fun fromStringToArrayList(value: String): ArrayList<Option> { Log.i("alengenije", "fromStringToArrayList string = $value") val listType = object:TypeToken<ArrayList<Option>>() {}.type return Gson().fromJson(value, listType) } @TypeConverter fun fromArrayLisrToString(list: ArrayList<Option>): String { val gson = Gson() return gson.toJson(list) } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cambie ArrayList a List .

Esto funciona para mi.

over 4 years ago · Santiago Trujillo Denunciar

0

El problema que tiene es causado por el uso de LiveData. Desde Android API 28, las bibliotecas de soporte se han movido a androidx. Esto significa que tienes que mover TODO a androidx. Su problema radica en un archivo build.gradle. Probablemente tenga el ciclo de vida de andoidx allí, pero Room lib como el antiguo 1.1.1 Room lib. Debe actualizar todas las bibliotecas de soporte para usar androidx así:

 def lifecycle_version = "2.0.0" implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.0.0' // Add RecyclerView dependency; must match SDK version implementation 'androidx.recyclerview:recyclerview:1.0.0' // Add FAB dependency implementation 'com.google.android.material:material:1.0.0-rc01' def room_version = "2.1.0-alpha07" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda