Nesse caso aqui como ficaria:
public boolean delete(ClienteVO vo){
SQLiteDatabase db = new DB(ctx).getWritableDatabase(); // Exclui essa linha também?
return (db.delete(table_name, "id=?", new String[]{vo.getId().toString()}) > 0);
}
Nesse caso aqui como ficaria:
public boolean delete(ClienteVO vo){
SQLiteDatabase db = new DB(ctx).getWritableDatabase(); // Exclui essa linha também?
return (db.delete(table_name, "id=?", new String[]{vo.getId().toString()}) > 0);
}
kmunga
Fiz um cadastro de teste e cliquei no botão para listar e deu isso no LogCat:
10-10 21:01:24.134: E/Database(394): close() was never explicitly called on database '/data/data/com.br.aquavendas/databases/aqua.db'
10-10 21:01:24.134: E/Database(394): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
10-10 21:01:24.134: E/Database(394): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)
10-10 21:01:24.134: E/Database(394): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
10-10 21:01:24.134: E/Database(394): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
10-10 21:01:24.134: E/Database(394): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
10-10 21:01:24.134: E/Database(394): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
10-10 21:01:24.134: E/Database(394): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
10-10 21:01:24.134: E/Database(394): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
10-10 21:01:24.134: E/Database(394): at com.br.aquavendas.dao.ClienteDAO.getAll(ClienteDAO.java:110)
10-10 21:01:24.134: E/Database(394): at com.br.aquavendas.Listar.onResume(Listar.java:98)
10-10 21:01:24.134: E/Database(394): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
10-10 21:01:24.134: E/Database(394): at android.app.Activity.performResume(Activity.java:3823)
10-10 21:01:24.134: E/Database(394): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
10-10 21:01:24.134: E/Database(394): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
10-10 21:01:24.134: E/Database(394): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
10-10 21:01:24.134: E/Database(394): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-10 21:01:24.134: E/Database(394): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-10 21:01:24.134: E/Database(394): at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 21:01:24.134: E/Database(394): at android.os.Looper.loop(Looper.java:123)
10-10 21:01:24.134: E/Database(394): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-10 21:01:24.134: E/Database(394): at java.lang.reflect.Method.invokeNative(Native Method)
10-10 21:01:24.134: E/Database(394): at java.lang.reflect.Method.invoke(Method.java:521)
10-10 21:01:24.134: E/Database(394): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-10 21:01:24.134: E/Database(394): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-10 21:01:24.134: E/Database(394): at dalvik.system.NativeStart.main(Native Method)
10-10 21:01:24.194: E/Database(394): close() was never explicitly called on database '/data/data/com.br.aquavendas/databases/aqua.db'
10-10 21:01:24.194: E/Database(394): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
10-10 21:01:24.194: E/Database(394): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)
10-10 21:01:24.194: E/Database(394): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
10-10 21:01:24.194: E/Database(394): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
10-10 21:01:24.194: E/Database(394): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
10-10 21:01:24.194: E/Database(394): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
10-10 21:01:24.194: E/Database(394): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
10-10 21:01:24.194: E/Database(394): at com.br.aquavendas.banco.DB.getDatabase(DB.java:35)
10-10 21:01:24.194: E/Database(394): at com.br.aquavendas.dao.ClienteDAO.<init>(ClienteDAO.java:25)
10-10 21:01:24.194: E/Database(394): at com.br.aquavendas.Listar.onResume(Listar.java:97)
10-10 21:01:24.194: E/Database(394): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
10-10 21:01:24.194: E/Database(394): at android.app.Activity.performResume(Activity.java:3823)
10-10 21:01:24.194: E/Database(394): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
10-10 21:01:24.194: E/Database(394): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
10-10 21:01:24.194: E/Database(394): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
10-10 21:01:24.194: E/Database(394): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-10 21:01:24.194: E/Database(394): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-10 21:01:24.194: E/Database(394): at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 21:01:24.194: E/Database(394): at android.os.Looper.loop(Looper.java:123)
10-10 21:01:24.194: E/Database(394): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-10 21:01:24.194: E/Database(394): at java.lang.reflect.Method.invokeNative(Native Method)
10-10 21:01:24.194: E/Database(394): at java.lang.reflect.Method.invoke(Method.java:521)
10-10 21:01:24.194: E/Database(394): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-10 21:01:24.194: E/Database(394): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-10 21:01:24.194: E/Database(394): at dalvik.system.NativeStart.main(Native Method)
kmunga,
Viu ai, deu o erro novamente.
Na minha classe DAO, tem o metodo fecha_banco(). Minha dúvida é:
Eu dou db.close() na classe DAO ou na classe que Cadastra ou Edita?
Esse código é o que ta no botão Salvar da Classe CadastrarCliente
Salvar = (Button) findViewById(R.id.btnSalvar);
Salvar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ClienteVO vo = new ClienteVO();
vo.setRazaosocial_nome(RazaoSocialNome.getText().toString());
vo.setNome_fantasia(NomeFantasia.getText().toString());
vo.setCnpj_cpf(CnpjCpf.getText().toString());
vo.setIe(IE.getText().toString());
vo.setEmail(Email.getText().toString());
vo.setContato(NomeContato.getText().toString());
vo.setEndereco(Endereco.getText().toString());
vo.setBairro(Bairro.getText().toString());
vo.setCep(CEP.getText().toString());
vo.setCidade(Cidade.getText().toString());
vo.setTelefone(Telefone.getText().toString());
vo.setCelular(Celular.getText().toString());
vo.setData_cadastro(DataCadastro.getText().toString());
ClienteDAO dao = new ClienteDAO(getBaseContext());
if(dao.insert(vo)){
Toast.makeText(getBaseContext(), "Sucesso na gravação!", Toast.LENGTH_LONG).show();
dao.fecha_banco();
finish();
}
}
});
Minha Classe ClienteDAO
package com.br.aquavendas.dao;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.br.aquavendas.banco.DB;
import com.br.aquavendas.vo.ClienteVO;
public class ClienteDAO {
private SQLiteDatabase db;
private static String table_name = "clientes";
private static Context ctx;
private static String[] columns = {"id", "razaosocial_nome", "nome_fantasia", "cnpj_cpf", "ie", "email", "contato", "endereco", "bairro", "cep", "cidade", "telefone", "celular", "data_cadastro"};
public ClienteDAO(Context ctx){
this.ctx = ctx;
DB banco =new DB(ctx);
db = banco.getDatabase();
}
public boolean insert(ClienteVO vo){
//SQLiteDatabase db = new DB(ctx).getWritableDatabase();
ContentValues ctv = new ContentValues();
ctv.put("razaosocial_nome", vo.getRazaosocial_nome());
ctv.put("nome_fantasia", vo.getNome_fantasia());
ctv.put("cnpj_cpf", vo.getCnpj_cpf());
ctv.put("ie", vo.getIe());
ctv.put("email", vo.getEmail());
ctv.put("contato", vo.getContato());
ctv.put("endereco", vo.getEndereco());
ctv.put("bairro", vo.getBairro());
ctv.put("cep", vo.getCep());
ctv.put("cidade", vo.getCidade());
ctv.put("telefone", vo.getTelefone());
ctv.put("celular", vo.getCelular());
ctv.put("data_cadastro", vo.getData_cadastro());
return (db.insert(table_name, null, ctv) > 0);
}
public boolean delete(ClienteVO vo){
// SQLiteDatabase db = new DB(ctx).getWritableDatabase();
return (db.delete(table_name, "id=?", new String[]{vo.getId().toString()}) > 0);
}
public boolean update(ClienteVO vo){
// SQLiteDatabase db = new DB(ctx).getWritableDatabase();
ContentValues ctv = new ContentValues();
ctv.put("razaosocial_nome", vo.getRazaosocial_nome());
ctv.put("nome_fantasia", vo.getNome_fantasia());
ctv.put("cnpj_cpf", vo.getCnpj_cpf());
ctv.put("ie", vo.getIe());
ctv.put("email", vo.getEmail());
ctv.put("contato", vo.getContato());
ctv.put("endereco", vo.getEndereco());
ctv.put("bairro", vo.getBairro());
ctv.put("cep", vo.getCep());
ctv.put("cidade", vo.getCidade());
ctv.put("telefone", vo.getTelefone());
ctv.put("celular", vo.getCelular());
ctv.put("data_cadastro", vo.getData_cadastro());
return (db.update(table_name, ctv, "id=?", new String[]{vo.getId().toString()}) > 0);
}
public ClienteVO getById(Integer ID){
// SQLiteDatabase db = new DB(ctx).getReadableDatabase();
Cursor rs = db.query(table_name, columns, "id=?", new String[]{ID.toString()}, null, null, null);
ClienteVO vo = null;
if(rs.moveToFirst()){
vo = new ClienteVO();
vo.setId(rs.getInt(rs.getColumnIndex("id")));
vo.setRazaosocial_nome(rs.getString(rs.getColumnIndex("razaosocial_nome")));
vo.setNome_fantasia(rs.getString(rs.getColumnIndex("nome_fantasia")));
vo.setCnpj_cpf(rs.getString(rs.getColumnIndex("cnpj_cpf")));
vo.setIe(rs.getString(rs.getColumnIndex("ie")));
vo.setEmail(rs.getString(rs.getColumnIndex("email")));
vo.setContato(rs.getString(rs.getColumnIndex("contato")));
vo.setEndereco(rs.getString(rs.getColumnIndex("endereco")));
vo.setBairro(rs.getString(rs.getColumnIndex("bairro")));
vo.setCep(rs.getString(rs.getColumnIndex("cep")));
vo.setCidade(rs.getString(rs.getColumnIndex("cidade")));
vo.setTelefone(rs.getString(rs.getColumnIndex("telefone")));
vo.setCelular(rs.getString(rs.getColumnIndex("celular")));
vo.setData_cadastro(rs.getString(rs.getColumnIndex("data_cadastro")));
}
rs.close();
return vo;
}
public List<ClienteVO> getAll(){
SQLiteDatabase db = new DB(ctx).getReadableDatabase();
Cursor rs = db.rawQuery("SELECT * FROM clientes", null);
List<ClienteVO> lista = new ArrayList<ClienteVO>();
while(rs.moveToNext()){
ClienteVO vo = new ClienteVO(rs.getInt(rs.getColumnIndex("id")),rs.getString(rs.getColumnIndex("razaosocial_nome")),rs.getString(rs.getColumnIndex("nome_fantasia")),rs.getString(rs.getColumnIndex("cnpj_cpf")),rs.getString(rs.getColumnIndex("ie")),rs.getString(rs.getColumnIndex("email")),rs.getString(rs.getColumnIndex("contato")),rs.getString(rs.getColumnIndex("endereco")),rs.getString(rs.getColumnIndex("bairro")),rs.getString(rs.getColumnIndex("cep")),rs.getString(rs.getColumnIndex("cidade")),rs.getString(rs.getColumnIndex("telefone")),rs.getString(rs.getColumnIndex("celular")),rs.getString(rs.getColumnIndex("data_cadastro")));
lista.add(vo);
}
rs.close();
return lista;
}
// CLIENTE POR NOME
public List<ClienteVO> getClientePorNome(String nomeString){
SQLiteDatabase db = new DB(ctx).getReadableDatabase();
String[] selectionArgs = {nomeString + "%"};
Cursor rs = db.rawQuery("SELECT * FROM clientes WHERE razaosocial_nome like ?", selectionArgs);
List<ClienteVO> lista = new ArrayList<ClienteVO>();
while (rs.moveToNext()) {
ClienteVO vo = new ClienteVO(rs.getInt(rs.getColumnIndex("id")),rs.getString(rs.getColumnIndex("razaosocial_nome")),rs.getString(rs.getColumnIndex("nome_fantasia")),rs.getString(rs.getColumnIndex("cnpj_cpf")),rs.getString(rs.getColumnIndex("ie")),rs.getString(rs.getColumnIndex("email")),rs.getString(rs.getColumnIndex("contato")),rs.getString(rs.getColumnIndex("endereco")),rs.getString(rs.getColumnIndex("bairro")),rs.getString(rs.getColumnIndex("cep")),rs.getString(rs.getColumnIndex("cidade")),rs.getString(rs.getColumnIndex("telefone")),rs.getString(rs.getColumnIndex("celular")),rs.getString(rs.getColumnIndex("data_cadastro")));
lista.add(vo);
}
rs.close();
return lista;
}
public void fecha_banco(){
if (db != null)
db.close();
}
}
Cara,na classe DAO tu segue criando um novo banco para executar tuas operações
public List<ClienteVO> getAll(){
// retire essa linha SQLiteDatabase db = new DB(ctx).getReadableDatabase();
Cursor rs = db.rawQuery("SELECT * FROM clientes", null);
List<ClienteVO> lista = new ArrayList<ClienteVO>();
while(rs.moveToNext()){
ClienteVO vo = new ClienteVO(rs.getInt(rs.getColumnIndex("id")),rs.getString(rs.getColumnIndex("razaosocial_nome")),rs.getString(rs.getColumnIndex("nome_fantasia")),rs.getString(rs.getColumnIndex("cnpj_cpf")),rs.getString(rs.getColumnIndex("ie")),rs.getString(rs.getColumnIndex("email")),rs.getString(rs.getColumnIndex("contato")),rs.getString(rs.getColumnIndex("endereco")),rs.getString(rs.getColumnIndex("bairro")),rs.getString(rs.getColumnIndex("cep")),rs.getString(rs.getColumnIndex("cidade")),rs.getString(rs.getColumnIndex("telefone")),rs.getString(rs.getColumnIndex("celular")),rs.getString(rs.getColumnIndex("data_cadastro")));
lista.add(vo);
}
rs.close();
return lista;
}
// CLIENTE POR NOME
public List<ClienteVO> getClientePorNome(String nomeString){
// retire essa linha SQLiteDatabase db = new DB(ctx).getReadableDatabase();
String[] selectionArgs = {nomeString + "%"};
Cursor rs = db.rawQuery("SELECT * FROM clientes WHERE razaosocial_nome like ?", selectionArgs);
List<ClienteVO> lista = new ArrayList<ClienteVO>();
while (rs.moveToNext()) {
ClienteVO vo = new ClienteVO(rs.getInt(rs.getColumnIndex("id")),rs.getString(rs.getColumnIndex("razaosocial_nome")),rs.getString(rs.getColumnIndex("nome_fantasia")),rs.getString(rs.getColumnIndex("cnpj_cpf")),rs.getString(rs.getColumnIndex("ie")),rs.getString(rs.getColumnIndex("email")),rs.getString(rs.getColumnIndex("contato")),rs.getString(rs.getColumnIndex("endereco")),rs.getString(rs.getColumnIndex("bairro")),rs.getString(rs.getColumnIndex("cep")),rs.getString(rs.getColumnIndex("cidade")),rs.getString(rs.getColumnIndex("telefone")),rs.getString(rs.getColumnIndex("celular")),rs.getString(rs.getColumnIndex("data_cadastro")));
lista.add(vo);
}
rs.close();
return lista;
}
Isso que vc postou é pra arrumar la?
deve arrumar, pelo menos a questão do close, senão resolver eu já não sei mais
Ok, estou fazendo. Ai faço em todas as DAO que tiver, certo?
Cara, tu cria um banco de dados no construtor e usa ele em toda a classe. Pelo que eu vi, só tinha faltado aquelas duas linhas que eu comentei.
Então, é que outras classes quase iguais a essa.
Ficou assim:
package com.br.aquavendas.dao;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.br.aquavendas.banco.DB;
import com.br.aquavendas.vo.ClienteVO;
public class ClienteDAO {
private SQLiteDatabase db;
private static String table_name = "clientes";
private static Context ctx;
private static String[] columns = {"id", "razaosocial_nome", "nome_fantasia", "cnpj_cpf", "ie", "email", "contato", "endereco", "bairro", "cep", "cidade", "telefone", "celular", "data_cadastro"};
public ClienteDAO(Context ctx){
this.ctx = ctx;
DB banco =new DB(ctx);
db = banco.getDatabase();
}
public boolean insert(ClienteVO vo){
//SQLiteDatabase db = new DB(ctx).getWritableDatabase();
ContentValues ctv = new ContentValues();
ctv.put("razaosocial_nome", vo.getRazaosocial_nome());
ctv.put("nome_fantasia", vo.getNome_fantasia());
ctv.put("cnpj_cpf", vo.getCnpj_cpf());
ctv.put("ie", vo.getIe());
ctv.put("email", vo.getEmail());
ctv.put("contato", vo.getContato());
ctv.put("endereco", vo.getEndereco());
ctv.put("bairro", vo.getBairro());
ctv.put("cep", vo.getCep());
ctv.put("cidade", vo.getCidade());
ctv.put("telefone", vo.getTelefone());
ctv.put("celular", vo.getCelular());
ctv.put("data_cadastro", vo.getData_cadastro());
return (db.insert(table_name, null, ctv) > 0);
}
public boolean delete(ClienteVO vo){
// SQLiteDatabase db = new DB(ctx).getWritableDatabase();
return (db.delete(table_name, "id=?", new String[]{vo.getId().toString()}) > 0);
}
public boolean update(ClienteVO vo){
// SQLiteDatabase db = new DB(ctx).getWritableDatabase();
ContentValues ctv = new ContentValues();
ctv.put("razaosocial_nome", vo.getRazaosocial_nome());
ctv.put("nome_fantasia", vo.getNome_fantasia());
ctv.put("cnpj_cpf", vo.getCnpj_cpf());
ctv.put("ie", vo.getIe());
ctv.put("email", vo.getEmail());
ctv.put("contato", vo.getContato());
ctv.put("endereco", vo.getEndereco());
ctv.put("bairro", vo.getBairro());
ctv.put("cep", vo.getCep());
ctv.put("cidade", vo.getCidade());
ctv.put("telefone", vo.getTelefone());
ctv.put("celular", vo.getCelular());
ctv.put("data_cadastro", vo.getData_cadastro());
return (db.update(table_name, ctv, "id=?", new String[]{vo.getId().toString()}) > 0);
}
public ClienteVO getById(Integer ID){
// SQLiteDatabase db = new DB(ctx).getReadableDatabase();
Cursor rs = db.query(table_name, columns, "id=?", new String[]{ID.toString()}, null, null, null);
ClienteVO vo = null;
if(rs.moveToFirst()){
vo = new ClienteVO();
vo.setId(rs.getInt(rs.getColumnIndex("id")));
vo.setRazaosocial_nome(rs.getString(rs.getColumnIndex("razaosocial_nome")));
vo.setNome_fantasia(rs.getString(rs.getColumnIndex("nome_fantasia")));
vo.setCnpj_cpf(rs.getString(rs.getColumnIndex("cnpj_cpf")));
vo.setIe(rs.getString(rs.getColumnIndex("ie")));
vo.setEmail(rs.getString(rs.getColumnIndex("email")));
vo.setContato(rs.getString(rs.getColumnIndex("contato")));
vo.setEndereco(rs.getString(rs.getColumnIndex("endereco")));
vo.setBairro(rs.getString(rs.getColumnIndex("bairro")));
vo.setCep(rs.getString(rs.getColumnIndex("cep")));
vo.setCidade(rs.getString(rs.getColumnIndex("cidade")));
vo.setTelefone(rs.getString(rs.getColumnIndex("telefone")));
vo.setCelular(rs.getString(rs.getColumnIndex("celular")));
vo.setData_cadastro(rs.getString(rs.getColumnIndex("data_cadastro")));
}
rs.close();
return vo;
}
public List<ClienteVO> getAll(){
// SQLiteDatabase db = new DB(ctx).getReadableDatabase();
Cursor rs = db.rawQuery("SELECT * FROM clientes", null);
List<ClienteVO> lista = new ArrayList<ClienteVO>();
while(rs.moveToNext()){
ClienteVO vo = new ClienteVO(rs.getInt(rs.getColumnIndex("id")),rs.getString(rs.getColumnIndex("razaosocial_nome")),rs.getString(rs.getColumnIndex("nome_fantasia")),rs.getString(rs.getColumnIndex("cnpj_cpf")),rs.getString(rs.getColumnIndex("ie")),rs.getString(rs.getColumnIndex("email")),rs.getString(rs.getColumnIndex("contato")),rs.getString(rs.getColumnIndex("endereco")),rs.getString(rs.getColumnIndex("bairro")),rs.getString(rs.getColumnIndex("cep")),rs.getString(rs.getColumnIndex("cidade")),rs.getString(rs.getColumnIndex("telefone")),rs.getString(rs.getColumnIndex("celular")),rs.getString(rs.getColumnIndex("data_cadastro")));
lista.add(vo);
}
rs.close();
return lista;
}
// CLIENTE POR NOME
public List<ClienteVO> getClientePorNome(String nomeString){
// SQLiteDatabase db = new DB(ctx).getReadableDatabase();
String[] selectionArgs = {nomeString + "%"};
Cursor rs = db.rawQuery("SELECT * FROM clientes WHERE razaosocial_nome like ?", selectionArgs);
List<ClienteVO> lista = new ArrayList<ClienteVO>();
while (rs.moveToNext()) {
ClienteVO vo = new ClienteVO(rs.getInt(rs.getColumnIndex("id")),rs.getString(rs.getColumnIndex("razaosocial_nome")),rs.getString(rs.getColumnIndex("nome_fantasia")),rs.getString(rs.getColumnIndex("cnpj_cpf")),rs.getString(rs.getColumnIndex("ie")),rs.getString(rs.getColumnIndex("email")),rs.getString(rs.getColumnIndex("contato")),rs.getString(rs.getColumnIndex("endereco")),rs.getString(rs.getColumnIndex("bairro")),rs.getString(rs.getColumnIndex("cep")),rs.getString(rs.getColumnIndex("cidade")),rs.getString(rs.getColumnIndex("telefone")),rs.getString(rs.getColumnIndex("celular")),rs.getString(rs.getColumnIndex("data_cadastro")));
lista.add(vo);
}
rs.close();
return lista;
}
public void fecha_banco(){
if (db != null)
db.close();
}
}
No meu CadastroCliente.java no botão Salvar fiz assim:
Salvar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ClienteVO vo = new ClienteVO();
vo.setRazaosocial_nome(RazaoSocialNome.getText().toString());
vo.setNome_fantasia(NomeFantasia.getText().toString());
vo.setCnpj_cpf(CnpjCpf.getText().toString());
vo.setIe(IE.getText().toString());
vo.setEmail(Email.getText().toString());
vo.setContato(NomeContato.getText().toString());
vo.setEndereco(Endereco.getText().toString());
vo.setBairro(Bairro.getText().toString());
vo.setCep(CEP.getText().toString());
vo.setCidade(Cidade.getText().toString());
vo.setTelefone(Telefone.getText().toString());
vo.setCelular(Celular.getText().toString());
vo.setData_cadastro(DataCadastro.getText().toString());
ClienteDAO dao = new ClienteDAO(getBaseContext());
if(dao.insert(vo)){
Toast.makeText(getBaseContext(), "Sucesso na gravação!", Toast.LENGTH_LONG).show();
dao.fecha_banco();
finish();
}
}
});
Ta certo? Fecho na Classe que ta Gravando ou Editando. Certo? Não no DAO.
Cara fiz assim:
1º Listei os clientes;
2º Selecionei um da lista e dei um click longo e escolhi editar;
3º Fiz a edição e Atualizei.
4º Cliquei no Botão Voltar do Emulador, não da minha aplicação e:
10-11 15:12:43.500: E/Database(279): close() was never explicitly called on database '/data/data/com.br.aquavendas/databases/aqua.db'
10-11 15:12:43.500: E/Database(279): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
10-11 15:12:43.500: E/Database(279): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)
10-11 15:12:43.500: E/Database(279): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
10-11 15:12:43.500: E/Database(279): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
10-11 15:12:43.500: E/Database(279): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
10-11 15:12:43.500: E/Database(279): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
10-11 15:12:43.500: E/Database(279): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
10-11 15:12:43.500: E/Database(279): at com.br.aquavendas.banco.DB.getDatabase(DB.java:35)
10-11 15:12:43.500: E/Database(279): at com.br.aquavendas.dao.ClienteDAO.<init>(ClienteDAO.java:25)
10-11 15:12:43.500: E/Database(279): at com.br.aquavendas.Listar.onResume(Listar.java:97)
10-11 15:12:43.500: E/Database(279): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
10-11 15:12:43.500: E/Database(279): at android.app.Activity.performResume(Activity.java:3823)
10-11 15:12:43.500: E/Database(279): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
10-11 15:12:43.500: E/Database(279): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
10-11 15:12:43.500: E/Database(279): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
10-11 15:12:43.500: E/Database(279): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-11 15:12:43.500: E/Database(279): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-11 15:12:43.500: E/Database(279): at android.os.Handler.dispatchMessage(Handler.java:99)
10-11 15:12:43.500: E/Database(279): at android.os.Looper.loop(Looper.java:123)
10-11 15:12:43.500: E/Database(279): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-11 15:12:43.500: E/Database(279): at java.lang.reflect.Method.invokeNative(Native Method)
10-11 15:12:43.500: E/Database(279): at java.lang.reflect.Method.invoke(Method.java:521)
10-11 15:12:43.500: E/Database(279): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-11 15:12:43.500: E/Database(279): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-11 15:12:43.500: E/Database(279): at dalvik.system.NativeStart.main(Native Method)
Pera um poko, na Classe Editar não dei dao.fecha_banco();
Classe EditarCliente ta assim:
package com.br.aquavendas;
import com.br.aquavendas.dao.ClienteDAO;
import com.br.aquavendas.vo.ClienteVO;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class EditarClientes extends Activity { // Início da Classe EditarClientes
private int ID = 0;
private EditText Id, RazaoSocialNome, NomeFantasia, CnpjCpf, IE, Email, NomeContato, Endereco, Bairro, CEP, Cidade, Telefone, Celular, DataCadastro;
private Button Atualizar;
@Override
protected void onCreate(Bundle icicle){ // Início do método onCreate
super.onCreate(icicle);
setContentView(R.layout.editar_clientes);
Intent it = getIntent();
ID = it.getIntExtra("codigo", 1);
// Botão Salvar do xml editar_clientes
Atualizar = (Button) findViewById(R.id.btnAtualizar);
final ClienteDAO dao = new ClienteDAO(getBaseContext());
final ClienteVO vo = dao.getById(ID);
Id = (EditText) findViewById(R.id.edtId);
RazaoSocialNome = (EditText) findViewById(R.id.edtRazao_Nome);
NomeFantasia = (EditText) findViewById(R.id.edtNomeFantasia);
CnpjCpf = (EditText) findViewById(R.id.edtCNPJ_CPF);
IE = (EditText) findViewById(R.id.edtIE);
Email = (EditText) findViewById(R.id.edtEmail);
NomeContato = (EditText) findViewById(R.id.edtNomeContato);
Endereco = (EditText) findViewById(R.id.edtEndereco);
Bairro = (EditText) findViewById(R.id.edtBairro);
CEP = (EditText) findViewById(R.id.edtCEP);
Cidade = (EditText) findViewById(R.id.edtCidade);
Telefone = (EditText) findViewById(R.id.edtTelefone);
Celular = (EditText) findViewById(R.id.edtCelular);
DataCadastro = (EditText) findViewById(R.id.edtData);
Id.setText(vo.getId().toString());
RazaoSocialNome.setText(vo.getRazaosocial_nome());
NomeFantasia.setText(vo.getNome_fantasia());
CnpjCpf.setText(vo.getCnpj_cpf());
IE.setText(vo.getIe());
Email.setText(vo.getEmail());
NomeContato.setText(vo.getContato());
Endereco.setText(vo.getEndereco());
Bairro.setText(vo.getBairro());
CEP.setText(vo.getCep());
Cidade.setText(vo.getCidade());
Telefone.setText(vo.getTelefone());
Celular.setText(vo.getCelular());
DataCadastro.setText(vo.getData_cadastro());
Atualizar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ClienteVO vo = new ClienteVO();
vo.setId(ID);
vo.setRazaosocial_nome(RazaoSocialNome.getText().toString());
vo.setNome_fantasia(NomeFantasia.getText().toString());
vo.setCnpj_cpf(CnpjCpf.getText().toString());
vo.setIe(IE.getText().toString());
vo.setEmail(Email.getText().toString());
vo.setContato(NomeContato.getText().toString());
vo.setEndereco(Endereco.getText().toString());
vo.setBairro(Bairro.getText().toString());
vo.setCep(CEP.getText().toString());
vo.setCidade(Cidade.getText().toString());
vo.setTelefone(Telefone.getText().toString());
vo.setCelular(Celular.getText().toString());
vo.setData_cadastro(DataCadastro.getText().toString());
ClienteDAO dao = new ClienteDAO(getBaseContext());
if(dao.update(vo)){
Toast.makeText(getBaseContext(), "Sucesso na atualização!", Toast.LENGTH_LONG).show();
dao.fecha_banco();
finish();
}
}
});
} // Fim do método onCreate
public void mensagemExibir(String titulo, String texto){
AlertDialog.Builder mensagem = new AlertDialog.Builder(EditarClientes.this);
mensagem.setTitle(titulo);
mensagem.setMessage(texto);
mensagem.setNeutralButton("Ok", null);
mensagem.show();
}
} // Fim da Classe EditarClientes
E deu novamente:
10-11 16:55:42.478: E/Database(281): close() was never explicitly called on database '/data/data/com.br.aquavendas/databases/aqua.db'
10-11 16:55:42.478: E/Database(281): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
10-11 16:55:42.478: E/Database(281): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)
10-11 16:55:42.478: E/Database(281): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
10-11 16:55:42.478: E/Database(281): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
10-11 16:55:42.478: E/Database(281): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
10-11 16:55:42.478: E/Database(281): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
10-11 16:55:42.478: E/Database(281): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
10-11 16:55:42.478: E/Database(281): at com.br.aquavendas.banco.DB.getDatabase(DB.java:35)
10-11 16:55:42.478: E/Database(281): at com.br.aquavendas.dao.ClienteDAO.<init>(ClienteDAO.java:25)
10-11 16:55:42.478: E/Database(281): at com.br.aquavendas.Listar.onResume(Listar.java:97)
10-11 16:55:42.478: E/Database(281): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
10-11 16:55:42.478: E/Database(281): at android.app.Activity.performResume(Activity.java:3823)
10-11 16:55:42.478: E/Database(281): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
10-11 16:55:42.478: E/Database(281): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
10-11 16:55:42.478: E/Database(281): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
10-11 16:55:42.478: E/Database(281): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-11 16:55:42.478: E/Database(281): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-11 16:55:42.478: E/Database(281): at android.os.Handler.dispatchMessage(Handler.java:99)
10-11 16:55:42.478: E/Database(281): at android.os.Looper.loop(Looper.java:123)
10-11 16:55:42.478: E/Database(281): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-11 16:55:42.478: E/Database(281): at java.lang.reflect.Method.invokeNative(Native Method)
10-11 16:55:42.478: E/Database(281): at java.lang.reflect.Method.invoke(Method.java:521)
10-11 16:55:42.478: E/Database(281): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-11 16:55:42.478: E/Database(281): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-11 16:55:42.478: E/Database(281): at dalvik.system.NativeStart.main(Native Method)
Cara, já não sei, pesquisei esse erro e achei isso
E o que seria isso? Esse site eu acho meio complicado. O engraçado é que ta funcionando perfeitamente.
A resposta seria essa:
@Override
protected void onDestroy() {
super.onDestroy();
if (openHelper != null) {
openHelper.close();
}
if (cdh != null) {
cdh.close();
}
}
Onde colocaria isso? Teria que adaptar para o meu, certo?
kmunga, encontrei isso:
"Bom… passei por esse erro e pelejei também…
Observem alguns pontos:
1 - caso sua aplicação de algum outro erro qualquer e feche inesperadamente antes do close de seu cursor, apenas algum tempo depois ela vai avisar que teve que fechar o cursor;
2 - após retornar o cursor feche ele e feche também se der algum erro, implementando as exceções do erro;
3 - sempre que fechar o logcat vai indicar onde estava o cursor, daí vocês vão la e implementem seu fechamento, exception, etc…
tentei relembrar o que usei para resolver esses problemas e acho que descrevi tudo… espero que seguindo esses conselhos consigam resolver tbm…"
http://www.portalandroid.org/comunidade/viewtopic.php?f=5&t=11105
http://www.guj.com.br/java/273309-duvida-android-sqlite
Mas não estou conseguindo arrumar isso.
Será que pode ser na Listar.java?
Listar.java
package com.br.aquavendas;
import java.util.List;
import com.br.aquavendas.adapters.ClienteAdapter;
import com.br.aquavendas.dao.ClienteDAO;
import com.br.aquavendas.vo.ClienteVO;
import android.app.Activity;
import android.app.ListActivity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class Listar extends Activity{
ListView ltw;
List<ClienteVO> lista = null;
int idItem = 0;
private static int MENU_EDITAR = 1;
private static int MENU_APAGAR = 2;
private static int MENU_VENDA = 3;
private EditText Procurar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listar);
ltw = (ListView) findViewById(R.id.ltvDados);
ltw.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
// Modo Filtro Lista - Início
Procurar = (EditText) findViewById(R.id.edtProcurar);
Procurar.requestFocus();
Procurar.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Chama método se digitar letra no campo edtProcurar
filtrarLista();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
// Modo Filtro Lista - Fim
final Button btnApagar = (Button) findViewById(R.id.btnApagar);
registerForContextMenu(ltw);
ltw.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
btnApagar.setVisibility(0);
// Toast.makeText(getBaseContext(), "AQUI!", Toast.LENGTH_LONG).show();
}
});
}
@Override
public void onResume(){
super.onResume();
ClienteDAO dao = new ClienteDAO(getBaseContext());
lista = dao.getAll();
ltw.setAdapter(new ClienteAdapter(getBaseContext(), lista));
}
public void Apagar_click(View v){
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
menu.setHeaderTitle(lista.get(info.position).getContato());
menu.add(Menu.NONE, MENU_EDITAR, 0, "Editar");
menu.add(Menu.NONE, MENU_APAGAR, 0, "Apagar");
menu.add(Menu.NONE, MENU_VENDA, 0, "Venda");
}
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo )item.getMenuInfo();
idItem = lista.get(info.position).getId();
if(item.getItemId() == MENU_EDITAR){
Intent it = new Intent(getBaseContext(), EditarClientes.class);
it.putExtra("codigo", idItem);
startActivity(it);
}else if(item.getItemId() == MENU_APAGAR){
Builder msg = new Builder(Listar.this);
msg.setMessage("Deseja excluir este cliente?");
msg.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ClienteDAO dao = new ClienteDAO(getBaseContext());
ClienteVO cliente = dao.getById(idItem);
if(dao.delete(cliente) == true){
Toast.makeText(getBaseContext(), "Excluído com sucesso!", Toast.LENGTH_LONG).show();
ltw.setAdapter(new ClienteAdapter(getBaseContext(), dao.getAll()));
dao.fecha_banco();
}
}
});
msg.setNegativeButton("Não", null);
msg.show();
}else if(item.getItemId() == MENU_VENDA){
Intent it = new Intent(getBaseContext(), Vendas.class);
it.putExtra("codigo", idItem);
startActivity(it);
finish();
// Toast.makeText(getBaseContext(), "Venda em desenvolvimento, aguarde!", Toast.LENGTH_LONG).show();
}
// ClienteDAO dao = new ClienteDAO(getBaseContext());
// dao.fecha_banco();
return super.onContextItemSelected(item);
}
// FILTRAR LISTA - COMEÇA AQUI
// FILTRAR LISTVIEW AO DIGITAR LETRA NO CAMPO
private void filtrarLista(){
// LISTAR TODOS OS CLIENTES COM FILTRO
carregarListaClientes_Filtro();
}
// Lista todos os clientes com nome, telefone e celular com o filtro
private void carregarListaClientes_Filtro(){
ClienteDAO dao = new ClienteDAO(getBaseContext());
String nomeString = Procurar.getText().toString();
// Cursor cursor;
// dao.getClientePorNome(nomeString);
// cursor.moveToFirst();
// SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.mostrabanco, cursor, new String[] {SQLConstantes.KEY_RAZAOSOCIALNOME, SQLConstantes.KEY_CELULAR, SQLConstantes.KEY_EMAIL}, new int[] {R.id.lblCampo1,R.id.lblCampo2,R.id.lblCampo3});
//SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item, cursor, new String[] {SQLConstantes.KEY_NOME, SQLConstantes.KEY_CELULAR}, new int[] {android.R.id.text1, android.R.id.text2});
// setListAdapter(adapter);
ltw.setAdapter(new ClienteAdapter(getBaseContext(), dao.getClientePorNome(nomeString)));
}
// FILTRAR LISTA - ACABA AQUI
}
O que o site tá flanado é fechar o banco no metodo onDestroy().
pode ser nesta parte
@Override
public void onResume(){
super.onResume();
ClienteDAO dao = new ClienteDAO(getBaseContext());
lista = dao.getAll();
ltw.setAdapter(new ClienteAdapter(getBaseContext(), lista));
}
tu não fechou o banco, tenta um dao.fecha_banco();
No DAO, CadastrarClientes, EditarClientes, qual classe faria isso?
Adaptar esse para o meu, certo? Como seria?
@Override
protected void onDestroy() {
super.onDestroy();
if (openHelper != null) {
openHelper.close();
}
if (cdh != null) {
cdh.close();
}
}
Fiz assim, na Listar.java
package com.br.aquavendas;
import java.util.List;
import com.br.aquavendas.adapters.ClienteAdapter;
import com.br.aquavendas.dao.ClienteDAO;
import com.br.aquavendas.vo.ClienteVO;
import android.app.Activity;
import android.app.ListActivity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class Listar extends Activity{
ListView ltw;
List<ClienteVO> lista = null;
int idItem = 0;
private SQLiteDatabase db;
private static int MENU_EDITAR = 1;
private static int MENU_APAGAR = 2;
private static int MENU_VENDA = 3;
private EditText Procurar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listar);
ltw = (ListView) findViewById(R.id.ltvDados);
ltw.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
// Modo Filtro Lista - Início
Procurar = (EditText) findViewById(R.id.edtProcurar);
Procurar.requestFocus();
Procurar.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Chama método se digitar letra no campo edtProcurar
filtrarLista();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
// Modo Filtro Lista - Fim
final Button btnApagar = (Button) findViewById(R.id.btnApagar);
registerForContextMenu(ltw);
ltw.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
btnApagar.setVisibility(0);
// Toast.makeText(getBaseContext(), "AQUI!", Toast.LENGTH_LONG).show();
}
});
}
@Override
public void onResume(){
super.onResume();
ClienteDAO dao = new ClienteDAO(getBaseContext());
lista = dao.getAll();
ltw.setAdapter(new ClienteAdapter(getBaseContext(), lista));
dao.fecha_banco();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (db != null) {
db.close();
}
}
public void Apagar_click(View v){
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
menu.setHeaderTitle(lista.get(info.position).getContato());
menu.add(Menu.NONE, MENU_EDITAR, 0, "Editar");
menu.add(Menu.NONE, MENU_APAGAR, 0, "Apagar");
menu.add(Menu.NONE, MENU_VENDA, 0, "Venda");
}
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo )item.getMenuInfo();
idItem = lista.get(info.position).getId();
if(item.getItemId() == MENU_EDITAR){
Intent it = new Intent(getBaseContext(), EditarClientes.class);
it.putExtra("codigo", idItem);
startActivity(it);
}else if(item.getItemId() == MENU_APAGAR){
Builder msg = new Builder(Listar.this);
msg.setMessage("Deseja excluir este cliente?");
msg.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ClienteDAO dao = new ClienteDAO(getBaseContext());
ClienteVO cliente = dao.getById(idItem);
if(dao.delete(cliente) == true){
Toast.makeText(getBaseContext(), "Excluído com sucesso!", Toast.LENGTH_LONG).show();
ltw.setAdapter(new ClienteAdapter(getBaseContext(), dao.getAll()));
dao.fecha_banco();
}
}
});
msg.setNegativeButton("Não", null);
msg.show();
}else if(item.getItemId() == MENU_VENDA){
Intent it = new Intent(getBaseContext(), Vendas.class);
it.putExtra("codigo", idItem);
startActivity(it);
finish();
// Toast.makeText(getBaseContext(), "Venda em desenvolvimento, aguarde!", Toast.LENGTH_LONG).show();
}
// ClienteDAO dao = new ClienteDAO(getBaseContext());
// dao.fecha_banco();
return super.onContextItemSelected(item);
}
// FILTRAR LISTA - COMEÇA AQUI
// FILTRAR LISTVIEW AO DIGITAR LETRA NO CAMPO
private void filtrarLista(){
// LISTAR TODOS OS CLIENTES COM FILTRO
carregarListaClientes_Filtro();
}
// Lista todos os clientes com nome, telefone e celular com o filtro
private void carregarListaClientes_Filtro(){
ClienteDAO dao = new ClienteDAO(getBaseContext());
String nomeString = Procurar.getText().toString();
// Cursor cursor;
// dao.getClientePorNome(nomeString);
// cursor.moveToFirst();
// SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.mostrabanco, cursor, new String[] {SQLConstantes.KEY_RAZAOSOCIALNOME, SQLConstantes.KEY_CELULAR, SQLConstantes.KEY_EMAIL}, new int[] {R.id.lblCampo1,R.id.lblCampo2,R.id.lblCampo3});
//SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item, cursor, new String[] {SQLConstantes.KEY_NOME, SQLConstantes.KEY_CELULAR}, new int[] {android.R.id.text1, android.R.id.text2});
// setListAdapter(adapter);
ltw.setAdapter(new ClienteAdapter(getBaseContext(), dao.getClientePorNome(nomeString)));
}
// FILTRAR LISTA - ACABA AQUI
}