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

Problemas com o preenchimento do Endereço

Olá, Meu programa de Agenda, depois de adicionar um contato, quando eu vou editá-lo o campo Endereço fica igual ao que está escrito no Nome. Sempre que editar o contato, tenho que redigitar o endereço correto. Já tentei buscar o erro de escrita do código mas não encontrei.

6 respostas

Mostra o código do FormularioHelper e do AlunoDAO, pra eu dar uma olhada.

[FormularioHelper]

package br.com.alura.agenda;

import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.widget.EditText; import android.widget.ImageView; import android.widget.RatingBar;

import br.com.alura.agenda.modelo.Aluno;

/* Created by mendenson on 02/08/16. */ public class FormularioHelper {

private final EditText campoNome; private final EditText campoEndereco; private final EditText campoTelefone; private final EditText campoSite; private final RatingBar campoNota; private final ImageView campoFoto; private Aluno aluno;

public FormularioHelper(FormularioActivity activity) { campoNome = (EditText) activity.findViewById(R.id.formulario_nome); campoEndereco = (EditText) activity.findViewById(R.id.formulario_endereco); campoTelefone = (EditText) activity.findViewById(R.id.formulario_telefone); campoSite = (EditText) activity.findViewById(R.id.formulario_site); campoNota = (RatingBar) activity.findViewById(R.id.formulario_nota); campoFoto = (ImageView) activity.findViewById(R.id.formulario_foto); aluno = new Aluno();

}

public Aluno pegaAluno() {

aluno.setNome(campoNome.getText().toString()); aluno.setEndereco(campoEndereco.getText().toString()); aluno.setTelefone(campoTelefone.getText().toString()); aluno.setSite(campoSite.getText().toString()); aluno.setNota(Double.valueOf(campoNota.getProgress())); aluno.setCaminhoFoto((String) campoFoto.getTag());

return aluno; }

public void preencheformulario(Aluno aluno) { campoNome.setText(aluno.getNome()); campoEndereco.setText(aluno.getNome()); campoTelefone.setText(aluno.getTelefone()); campoSite.setText(aluno.getSite()); campoNota.setProgress(aluno.getNota().intValue()); this.aluno = aluno; }

public void carregaImagem(String caminhoFoto) { if (caminhoFoto != null) { Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto); Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 300, 300, true); campoFoto.setImageBitmap(bitmapReduzido); campoFoto.setScaleType(ImageView.ScaleType.FIT_XY); campoFoto.setTag(caminhoFoto);

} } }

[AlunoDAO]

package br.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 android.support.annotation.NonNull;

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

import br.com.alura.agenda.modelo.Aluno;

/* Created by mendenson on 02/08/16. */ public class AlunoDAO extends SQLiteOpenHelper { public AlunoDAO(Context context) { super(context, "Agenda", null, 2); }

@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, " + "caminhoFoto TEXT);"; db.execSQL(sql);

}

@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = ""; switch (oldVersion) { case 1: sql = "ALTER TABLE Alunos ADD COLUMN caminhoFoto TEXT"; db.execSQL(sql); } }

public void insere(Aluno aluno) { SQLiteDatabase db = getWritableDatabase();

ContentValues dados = pegaDadosDoAluno(aluno);

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

@NonNull private ContentValues pegaDadosDoAluno(Aluno aluno) { 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()); dados.put("caminhoFoto", aluno.getCaminhoFoto()); return dados; }

public List buscaAlunos() { String sql = "SELECT * FROM Alunos;"; SQLiteDatabase db = getReadableDatabase(); Cursor c = db.rawQuery(sql, null);

List alunos = new ArrayList(); while (c.moveToNext()) { Aluno aluno = new Aluno(); aluno.setId(c.getLong(c.getColumnIndex("id"))); 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"))); aluno.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));

alunos.add(aluno);

} c.close();

return alunos;

}

public void deleta(Aluno aluno) { SQLiteDatabase db = getWritableDatabase();

String[] params = {aluno.getId().toString()}; db.delete("Alunos", "id = ?", params); }

public void altera(Aluno aluno) { SQLiteDatabase db = getWritableDatabase();

ContentValues dados = pegaDadosDoAluno(aluno);

String[] params = {aluno.getId().toString()}; db.update("Alunos",dados, "id = ?", params); }

public boolean ehAluno(String telefone) { SQLiteDatabase db = getReadableDatabase(); Cursor c = db.rawQuery("SELECT * FROM Alunos WHERE telefone = ?", new String[]{telefone}); int resultados = c.getCount(); c.close(); return resultados > 0; } }

solução!

No método preencheFormulario, você tem a seguinte linha:

campoEndereco.setText(aluno.getNome());

Basta trocar para:

campoEndereco.setText(aluno.getEndereco());

Filipe estou com o mesmo problema ao Editar ele retorna todos os campos preenchidos porem o campoURL (no meu caso) retorna vazio. creio que se Mendenson fizer vai acontecer a mesma coisa. Baixei o projeto da aula porem foi retirado o botão Editar do projeto.

public FormularioHelp(FormularioActivity Activity) {
        //Criando objeto dos dados
        nomeServidor = (EditText) Activity.findViewById(R.id.formulario_servidor);
        numeroIP = (EditText) Activity.findViewById(R.id.formulario_IP);
        campoLogin = (EditText) Activity.findViewById(R.id.formulario_Login);
        campoSenha = (EditText) Activity.findViewById(R.id.formulario_Senha);
        campoLoginRoot = (EditText) Activity.findViewById(R.id.formulario_Login_root);
        campoSenhaRoot = (EditText) Activity.findViewById(R.id.formulario_Senha_root);
        campoURL = (EditText) Activity.findViewById(R.id.formulario_url);
        password = new Password();


    }

Retificando mandei trecho errado.

  public void Preencheformulariopsw(Password password) {
        nomeServidor.setText(password.getNome());
        numeroIP.setText(password.getIp());
        campoLogin.setText(password.getLogin());
        campoSenha.setText(password.getSenha());
        campoSenhaRoot.setText(password.getSenhaRoot());
        campoSenhaRoot.setText(password.getSenhaRoot());
        campoURL.setText(password.getUrl_caminho());

        this.password = password;
    }insira seu código aqui

muito obrigado pela ajuda! Foi realmente uma falta de atenção com o detalhe do código.