Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

681
Visualizações
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 Respostas
Responde à pergunta

0

Cambie ArrayList a List .

Esto funciona para mi.

over 4 years ago · Santiago Trujillo Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda