Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Aula 5 -> Deletando alunos em Kotlin

Olá pessoal, tudo bem? Estou estudando Kotlin por minha conta e decidi refazer algumas aulas e converter o que era Java para Kotlin e ver como funciona. Até aqui, tudo ocorreu bem, o único problema está para deletar um aluno da lista. O menu aparece, eu clico em "Deletar" e não deleta. Para verificar, coloquei um toast enviando uma mensagem de aluno deletado, a mensagem aparece, mas não deleta.

Consigo inserir alunos sem problemas.

Será que alguém conseguiria me ajudar?

Segue os códigos abaixo:

ListaAlunos.kt

override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
        val deletar = menu?.add("Deletar") 

        deletar?.setOnMenuItemClickListener {
            val info: AdapterView.AdapterContextMenuInfo = menuInfo as AdapterView.AdapterContextMenuInfo
            val aluno: Aluno = listaAlunos.getItemAtPosition(info.position) as Aluno

            val dao = AlunoDAO(this@AgendaActivity)
            dao.deleta(aluno)
            dao.close()

            carregaLista()

            return@setOnMenuItemClickListener false
        }
    }

AlunoDAO.kt

    // DELETANDO ÍTEM DO BANCO DE DADOS
    fun deleta(aluno: Aluno) {
        val db: SQLiteDatabase = writableDatabase

        val params: Array<String> = arrayOf(aluno.nome)
        db.delete("Alunos", "id = ?", params)
    }
3 respostas

Fala ai Manoel, de boa ?

Cara seu código tá me parecendo bem correto...

Tô achando que talvez ele não esteja apenas atualizando a listagem.

Um teste tosco que eu farei seria chamar o onResume na mão, só para garantir isso.

solução!

Fala Matheus, tudo bem e vc?

Forcei o onResume() e nada, mas olhando a variável params acabei achando o erro! Erro do operador haha.

Eu tava comparando o id "id = ?" com aluno.nome. Era só comparar com aluno.id.toString().

Segue a correção:

    fun deleta(aluno: Aluno) {
        val db: SQLiteDatabase = writableDatabase

        val params: Array<String> = arrayOf(aluno.id.toString())
        db.delete("Alunos", "id = ?", params)
    }

Agora está deletando!

Obrigado pela ajuda.

Boa ! Acabamos deixando passar ,rs