Olá
Estou usando a biblioteca Room para armazenamento interno de dados e para otimizar o processamento estou usando as coroutines.
Tenho uma variável que declarei como lateinit.
private lateinit var alimentos: MutableList<Alimento>
Ela receberá uma lista de alimentos vindos do banco de dados
@Dao
interface AlimentoDaoRoom {
@Query("SELECT * FROM alimento")
suspend fun buscarTodos(): List<Alimento>
O problema é que estou envolvendo a chamada do método em uma coroutine:
lifecycleScope.launch {
alimentos = dao.buscarTodos().toMutableList()
}
E essa lista de alimentos é repassada para um adapter de uma combo box (spinner)
adapter = ArrayAdapter<Alimento>(
this,
R.layout.spinner_item,
alimentos
)
Mas como a inicialização da variável 'alimento' é feita dentro de uma coroutine ela tem uma certa demora, e por isso quando chega no adapter recebo um erro dizendo que a variável alimento ainda não foi inicializada "lateinit property alimentos has not been initialized"
Como faço pra inicialização do adapter acontecer só depois que a variável 'alimento' receber a lista do banco de dados?
obrigado quem puder ajudar !!