Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não consigo fazer a lista aparecer na página inicial

No curso 1 de Android, eu estou fazendo ele com Kotlin(no curso em vídeo é em Java) e eu consegui realizar todos os passos, menos mostrar os dados na lista quando clica em salvar.

Eu acredito que o erro está no meu DAO, pois eu testei se o adapter estava atualizando a ListView usando um array genérico e está atualizando, então suponho que o erro seja no fluxo do app, especificamente no momento de salvar no DAO.

package com.example.listadealunos

class AlunoDAO(){
    private val alunos: MutableList<Aluno> = mutableListOf<Aluno>()

    fun salva(aluno: Aluno) {
        alunos.add(aluno)
    }

    fun todos(): MutableList<Aluno> {
        return alunos
    }
}

Esse é o código do meu DAO, nas activities dos formulários eu fiz exatamente como está descrito no curso, instancio o objeto DAO na activity do formulário e depois faço os métodos na mesma ordem, porém o app não mostra os dados recém salvos.

O meu código está praticamente igual ao do instrutor em Java porque fiquei alterando, "traduzindo" pra Kotlin, pois não consegui fazer funcionar de jeito nenhum.

1 resposta
solução!

Oi Gustavo, tudo bem?

Eu acredito que o problema é que a lista está vinculada à instância do DAO, em outras palavras, você precisa transformar a lista em algo similar ao static do Java, os Companion Objects. Considerando o seu código, a conversão seria a seguinte:

class AlunoDAO(){

    fun salva(aluno: Aluno) {
        alunos.add(aluno)
    }

    fun todos(): MutableList<Aluno> {
        return alunos
    }

    companion object {
        private val alunos: MutableList<Aluno> = mutableListOf<Aluno>()
    }

}

Com essa implementação eu acredito que funcione.

É importante ressaltar que essa implementação tem algumas falhas de segurança, pois qualquer um pode modificar a fonte de dados, o companion object alunos. Nos cursos focados em Kotlin, falamos a respeito da técnica que evita esse problema :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software