Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

692
Views
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 answers
Answer question

0

Cambie ArrayList a List .

Esto funciona para mi.

over 4 years ago · Santiago Trujillo Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!