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

Dúvida no Ex. 5 da Aula 4 - Ciclo de vida das activities

Bom dia prezados,

estou com um probleminha na aplicação referente a consulta de alunos,

quando eu eu vou recuperar o index da coluna do meu Id do aluno ele me traz a posição 0 ao invez da posição correta da coluna que seria 1. ai ocorre o erro,

estranho que eu deu um c.moveToNext() fazendo que o curso pule da posição 0 para 1,

em fim tenho duas opções de fazer um pulo do gato aqui

1 - e incrementar a posição do Id na mao ao invez de fazer um c.getColumnIndex("id")

2 - comentar a linha de codigo mais ai eu nao consegueria deletar e editar, ai teria que fazer mais gatos na App. //aluno.setId(c.getLong(c.getColumnIndex("id") ));

Alguem sabe o pq que nao consigo pegar o indice correto da minha coluna Id do meu aluno.

Segue o mapeamento da entidade e do banco

Aluno private Long id;

banco id INTEGER PRIMARY KEY

3 respostas

Olá Rodrigo, tudo bem ?

Aparentemente pelo que você disse, tudo deveria estar certo. Contudo, você pode colocar o código do seu dao aqui para vermos por gentileza.

Abraços

Pois Matheus, muito estranho inclusive quando estou vou deletar esta gerando um erro esquisito que acho q e a mesma coisa.

SEGUE MINHA DAO

package com.alura.agenda.dao;

import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;

import com.alura.agenda.modelo.Aluno;

import java.util.ArrayList; import java.util.List;

/* Created by Rodrigo on 05/12/2015. */ public class AlunoDao extends SQLiteOpenHelper{

public AlunoDao(Context context) { super(context, "Agenda", null, 1); }

@Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE Alunos(_id INTEGER PRIMARY KEY, nome TEXT NOT NULL, endereco TEXT, telefone TEXT, site TEXT, nota REAL);"; db.execSQL(sql);

}

@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "DROP TABLE IF EXIST Alunos"; db.execSQL(sql); onCreate(db); }

public void inserirAluno(Aluno aluno) { SQLiteDatabase db = getWritableDatabase(); ContentValues dados = new ContentValues();

dados.put("nome", aluno.getNome()); dados.put("endereco", aluno.getEndereco()); dados.put("telefone", aluno.getTelefone()); dados.put("site", aluno.getSite()); dados.put("nota", aluno.getNota());

db.insert("Alunos", null, dados); }

public List buscaAlunos() { String sql = "SELECT * FROM Alunos;";

SQLiteDatabase db = getWritableDatabase(); Cursor c = db.rawQuery(sql, null); List listaAlunos = new ArrayList(); while (c.moveToNext()){ Aluno aluno = new Aluno();

aluno.set_id(c.getLong(c.getColumnIndex("_id") + 1)); aluno.setNome(c.getString(c.getColumnIndex("nome"))); aluno.setEndereco(c.getString(c.getColumnIndex("endereco"))); aluno.setTelefone(c.getString(c.getColumnIndex("telefone"))); aluno.setSite(c.getString(c.getColumnIndex("site"))); aluno.setNota(c.getDouble(c.getColumnIndex("nota")));

listaAlunos.add(aluno); } c.close(); return listaAlunos; }

public void deleteAluno(Aluno alunoDeletar) { SQLiteDatabase db = getWritableDatabase();

String[] params = {alunoDeletar.get_id().toString()}; db.delete("Alunos", "_id = ?", params);

} }

solução!

Nossa Matheus, que estranho acabei de estar funcionou so tirei o pulo do gato ai que seria a soma de mais um na hora de popular o campo _id. deu certinho agora. muito esquisito. inclusive o delete funcionou.

Muito obrigado amigo, agora deixa eu voltar a estudar aqui.

Abração

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