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

Não salva

package com.example.nikopcpower.agendanova.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.example.nikopcpower.agendanova.modelo.Funcionario;

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

/**
 * Created by Niko Pc Power on 19/03/2017.
 */

public class FuncionarioDAO extends SQLiteOpenHelper{


        public FuncionarioDAO(Context context) {
            super(context, "Funcionario", null, 1);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            String sql = "CREATE TABLE Funcionarios (id INTEGER PRIMARY KEY, nome TEXT NOT NULL, entrada TEXT ,intervalo TEXT, saida TEXT, nota REAL);";
            db.execSQL(sql);
        }

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

        }

        public void insere(Funcionario funcionario) {
            SQLiteDatabase db = getWritableDatabase();

            ContentValues dados = pegaDadosDoFuncionario(funcionario);

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

        private ContentValues pegaDadosDoFuncionario(Funcionario funcionario) {
            ContentValues dados = new ContentValues();
            dados.put("nome", funcionario.getNome());
            dados.put("entrada", funcionario.getEntrada());
            dados.put("intervalo", funcionario.getIntervalo());
            dados.put("saida", funcionario.getSaida());
            dados.put("nota", funcionario.getNota());

            return dados;
        }

        public List<Funcionario> buscaFuncionarios() {
            String sql = "SELECT * FROM Funcionarios;";
            SQLiteDatabase db = getReadableDatabase();
            Cursor c = db.rawQuery(sql, null);

            List<Funcionario> funcionarios = new ArrayList<Funcionario>();
            while (c.moveToNext()) {
                Funcionario funcionario = new Funcionario();
                funcionario.setId(c.getLong(c.getColumnIndex("id")));
                funcionario.setNome(c.getString(c.getColumnIndex("nome")));
                funcionario.setEntrada(c.getString(c.getColumnIndex("entrada")));
                funcionario.setIntervalo(c.getString(c.getColumnIndex("intervalo")));
                funcionario.setSaida(c.getString(c.getColumnIndex("saida")));
                funcionario.setNota(c.getDouble(c.getColumnIndex("nota")));
            }

            c.close();
            return funcionarios;
        }

        public void deleta(Funcionario funcionario) {
            SQLiteDatabase db = getWritableDatabase();
            String[] params = {funcionario.getId().toString()};
            db.delete("Funcionarios", "id = ?", params);
        }

        public void altera(Funcionario funcionario) {
            SQLiteDatabase db = getWritableDatabase();

            ContentValues dados = pegaDadosDoFuncionario(funcionario);

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

package com.example.nikopcpower.agendanova.modelo;

import java.io.Serializable;

/**
 * Created by Niko Pc Power on 19/03/2017.
 */

public class Funcionario implements Serializable{

    private Long id;
    private String nome;
    private String entrada;
    private String intervalo;
    private String saida;
    private Double nota;

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEntrada() {
        return entrada;
    }

    public void setEntrada(String entrada) {
        this.entrada = entrada;
    }

    public String getIntervalo() {
        return intervalo;
    }

    public void setIntervalo(String intervalo) {
        this.intervalo = intervalo;
    }

    public String getSaida() {
        return saida;
    }

    public void setSaida(String saida) {
        this.saida = saida;
    }

    public Double getNota() {
        return nota;
    }

    public void setNota(Double nota) {
        this.nota = nota;
    }

    @Override
    public String toString() {
        return getId() + " - " + getNome();
    }
}


package com.example.nikopcpower.agendanova;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import com.example.nikopcpower.agendanova.dao.FuncionarioDAO;
import com.example.nikopcpower.agendanova.modelo.Funcionario;

import java.util.List;

public class AgendaFuncionariosActivity extends AppCompatActivity {

    private ListView listaFuncionarios;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_agenda_funcionarios);

        listaFuncionarios = (ListView) findViewById(R.id.lista_funcionario);

        listaFuncionarios.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Funcionario funcionario = (Funcionario) listaFuncionarios.getItemAtPosition(position);
                Intent intentvaiproformulario = new Intent(AgendaFuncionariosActivity.this, FormularioActivity.class);
                intentvaiproformulario.putExtra("funcionario",funcionario);
                startActivity(intentvaiproformulario);
            }
        });

        Button novofunc = (Button) findViewById(R.id.Novofuncionario);
        novofunc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intentvaiproformulario = new Intent(AgendaFuncionariosActivity.this, FormularioActivity.class);
                startActivity(intentvaiproformulario);
            }
        });

        registerForContextMenu(listaFuncionarios);
    }

    @Override
    protected void onResume() {
        super.onResume();
        carregalista();
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, final ContextMenu.ContextMenuInfo menuInfo) {
        MenuItem deletar = menu.add("Deletar");
        deletar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
                Funcionario funcionario = (Funcionario) listaFuncionarios.getItemAtPosition(info.position);
                Toast.makeText(AgendaFuncionariosActivity.this, "Deletar o Funcionario" + funcionario.getNome(), Toast.LENGTH_SHORT).show();

                FuncionarioDAO dao = new FuncionarioDAO(AgendaFuncionariosActivity.this);
                dao.deleta(funcionario);
                dao.close();

                carregalista();
                return false;
            }
        });
    }

    private void carregalista(){
        FuncionarioDAO dao = new FuncionarioDAO(this);
        List<Funcionario> funcionarios = dao.buscaFuncionarios();
        dao.close();

        ArrayAdapter<Funcionario> adapter = new ArrayAdapter<Funcionario>(this, android.R.layout.simple_list_item_1,funcionarios);
        listaFuncionarios.setAdapter(adapter);
    }
}

package com.example.nikopcpower.agendanova;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

import com.example.nikopcpower.agendanova.dao.FuncionarioDAO;
import com.example.nikopcpower.agendanova.modelo.Funcionario;

public class FormularioActivity extends AppCompatActivity {

    private FormularioHelper helper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_formulario);

        helper = new FormularioHelper(this);

        Intent intent = getIntent();
        Funcionario funcionario = (Funcionario) intent.getSerializableExtra("funcionario");

        if(funcionario !=null){
            helper.preencheformulario(funcionario);
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case  R.id.menu_formulario_ok:
                Funcionario funcionario = helper.pegafuncionario();
                FuncionarioDAO dao = new FuncionarioDAO(this);

                if (funcionario.getId() != null) {
                    dao.altera(funcionario);
                }else{
                    dao.insere(funcionario);
                }

                dao.close();
                Toast.makeText(FormularioActivity.this, "Funcionario" +funcionario.getNome()+ "Salvo", Toast.LENGTH_SHORT).show();
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}


package com.example.nikopcpower.agendanova;

import android.widget.EditText;
import android.widget.RatingBar;

import com.example.nikopcpower.agendanova.modelo.Funcionario;

/**
 * Created by Niko Pc Power on 19/03/2017.
 */

public class FormularioHelper{


    private final EditText camponome;
    private final EditText campoentrada;
    private final EditText campointervalo;
    private final EditText camposaida;
    private final RatingBar camponota;

    private Funcionario funcionario;

    public FormularioHelper(FormularioActivity activity) {
        camponome = (EditText) activity.findViewById(R.id.Formulario_Nome);
        campoentrada = (EditText) activity.findViewById(R.id.Formulario_Entrada);
        campointervalo = (EditText) activity.findViewById(R.id.Formulario_Intervalo);
        camposaida = (EditText) activity.findViewById(R.id.Formulario_Saida);
        camponota = (RatingBar) activity.findViewById(R.id.Formulario_Nota);
        funcionario = new Funcionario();
    }

    public Funcionario pegafuncionario() {
        funcionario.setNome(camponome.getText().toString());
        funcionario.setEntrada(campoentrada.getText().toString());
        funcionario.setIntervalo(campointervalo.getText().toString());
        funcionario.setSaida(camposaida.getText().toString());
        funcionario.setNota(Double.valueOf(camponota.getProgress()));

        return funcionario;
    }

    public void preencheformulario(Funcionario funcionario) {
        camponome.setText(funcionario.getNome());
        campoentrada.setText(funcionario.getEntrada());
        campointervalo.setText(funcionario.getIntervalo());
        camposaida.setText(funcionario.getSaida());
        camponota.setProgress(funcionario.getNota().intValue());
        this.funcionario = funcionario;
    }

}

fiz tudo certo mas na hora de salvar alguma pessoa no formulario fica tudo em branco

6 respostas

Olá Bernardo,

Qual o problema que está acontecendo exatamente? O aplicativo para de funcionar, os dados não aparecem na lista? Alguma exception ou mensagem de erro no console?

Os dados não aparecem na lista, coloco o nome e salvo mas não aparece nada na lista a lista continua em branco.

Olá Bernardo,

O problema está no DAO no método buscaFuncionarios. Dentro do while lemos cada funcionário do resultado da query mas ficou faltando adicionar esses funcionários na lista. Para corrigir basta adicionar cada funcionário à lista na última linha do while:

        public List<Funcionario> buscaFuncionarios() {
            String sql = "SELECT * FROM Funcionarios;";
            SQLiteDatabase db = getReadableDatabase();
            Cursor c = db.rawQuery(sql, null);

            List<Funcionario> funcionarios = new ArrayList<Funcionario>();
            while (c.moveToNext()) {
                Funcionario funcionario = new Funcionario();
                funcionario.setId(c.getLong(c.getColumnIndex("id")));
                funcionario.setNome(c.getString(c.getColumnIndex("nome")));
                funcionario.setEntrada(c.getString(c.getColumnIndex("entrada")));
                funcionario.setIntervalo(c.getString(c.getColumnIndex("intervalo")));
                funcionario.setSaida(c.getString(c.getColumnIndex("saida")));
                funcionario.setNota(c.getDouble(c.getColumnIndex("nota")));
                funcionarios.add(funcionario);  // <--- adicionar essa linha
            }

            c.close();
            return funcionarios;
        }

fiz o que vc falou mas mesmo assim não salva fica tudo em branco a lista.

package com.example.nikopcpower.agenda2.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.example.nikopcpower.agenda2.modelo.Funcionario;

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

/* Created by Niko Pc Power on 19/03/2017. */

public class FuncionarioDAO extends SQLiteOpenHelper { public FuncionarioDAO(Context context) { super(context, "Agenda", null, 1); }

@Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE Funcionarios (id INTEGER PRIMARY KEY, nome TEXT not NULL, entrada TEXT, intervalo TEXT, saida TEXT, nota REAL);"; db.execSQL(sql);

}

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

}

public void insere(Funcionario funcionario) { SQLiteDatabase db = getWritableDatabase();

ContentValues dados = new ContentValues(); dados.put("nome", funcionario.getNome()); dados.put("entrada", funcionario.getEntrada()); dados.put("intervalo", funcionario.getIntervalo()); dados.put("saida", funcionario.getSaida()); dados.put("nota", funcionario.getNota());

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

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

List funcionarios = new ArrayList(); while (c.moveToNext()) { Funcionario funcionario = new Funcionario(); funcionario.setId(c.getLong(c.getColumnIndex("id"))); funcionario.setNome(c.getString(c.getColumnIndex("nome"))); funcionario.setEntrada(c.getString(c.getColumnIndex("entrada"))); funcionario.setIntervalo(c.getString(c.getColumnIndex("intervalo"))); funcionario.setSaida(c.getString(c.getColumnIndex("saida"))); funcionario.setNota(c.getDouble(c.getColumnIndex("nota"))); funcionarios.add(funcionario); } c.close();

return funcionarios; } }

solução!

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

import com.example.nikopcpower.agenda2.modelo.Funcionario;

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

/* Created by Niko Pc Power on 19/03/2017. */

public class FuncionarioDAO extends SQLiteOpenHelper { public FuncionarioDAO(Context context) { super(context, "Agenda", null, 1); }

@Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE Funcionarios (id INTEGER PRIMARY KEY, nome TEXT not NULL, entrada TEXT, intervalo TEXT, saida TEXT, nota REAL);"; db.execSQL(sql);

}

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

}

public void insere(Funcionario funcionario) { SQLiteDatabase db = getWritableDatabase();

ContentValues dados = new ContentValues(); dados.put("nome", funcionario.getNome()); dados.put("entrada", funcionario.getEntrada()); dados.put("intervalo", funcionario.getIntervalo()); dados.put("saida", funcionario.getSaida()); dados.put("nota", funcionario.getNota());

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

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

List funcionarios = new ArrayList(); while (c.moveToNext()) { Funcionario funcionario = new Funcionario(); funcionario.setId(c.getLong(c.getColumnIndex("id"))); funcionario.setNome(c.getString(c.getColumnIndex("nome"))); funcionario.setEntrada(c.getString(c.getColumnIndex("entrada"))); funcionario.setIntervalo(c.getString(c.getColumnIndex("intervalo"))); funcionario.setSaida(c.getString(c.getColumnIndex("saida"))); funcionario.setNota(c.getDouble(c.getColumnIndex("nota"))); funcionarios.add(funcionario); } c.close();

return funcionarios; } }