Olá Pessoal,
Hoje vou mostrar como carregar um ListView com informações vindas do SqLite, esse exemplo utiliza parte do código utilizado no exemplo de Agenda.
A seguir temos um print do projeto, para orientar onde devemos criar cada arquivo.
Para facilitar no aprendizado todos os fontes apresentados seguem com comentários, e abaixo segue todo o fonte utilizado.
Arquivo main.xml
Arquivo row.xml
Arquivo BaseDAO.java
Arquivo ListSqliteActivity.java
Abaixo seguem as imagens do projeto em execução.
Para o programa funcionar é preciso primeiro clicar no botão "Inserir registros" com isso será exibida uma mensagem de "Registros incluídos com sucesso", em seguida deve ser clicado no botão
"Carregar registros" para ser exibido a lista dos dados inseridos no Banco de Dados SqLite.
Por enquanto é isso pessoal, espero que gostem e comentem, caso tenham alguma dúvida, crítica ou sugestão é só enviar.
Em breve estarei apresentando mais exemplos sobre SqLite.
Posts relacionados:
Criação de uma Agenda - http://escoladeandroid.blogspot.com.br/2012/02/android-criando-uma-agenda-de-contatos.html
Desenvolvi o jogo Circus Puzzle Free ele é um quebra-cabeça e está publicado no Android Market, agradeço a todos que baixarem, jogarem e comentarem.
Hoje vou mostrar como carregar um ListView com informações vindas do SqLite, esse exemplo utiliza parte do código utilizado no exemplo de Agenda.
A seguir temos um print do projeto, para orientar onde devemos criar cada arquivo.
Para facilitar no aprendizado todos os fontes apresentados seguem com comentários, e abaixo segue todo o fonte utilizado.
Arquivo main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btnInserir" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Inserir registros" android:onClick="btnInserir_Click"/> <Button android:id="@+id/btnCarregar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Carregar registros" android:onClick="btnCarregar_Click" /> <ListView android:id="@+id/listView1" android:layout_width="fill_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout>
Arquivo row.xml
<?xml version="1.0" encoding="UTF-8"?> <RelativeLayout android:layout_width="fill_parent" android:orientation="horizontal" android:id="@+id/rowLayout" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/tvNome" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Nome" android:layout_alignParentLeft="true"/> <TextView android:id="@+id/tvEndereco" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_alignParentLeft="true" android:layout_below="@+id/tvNome" android:gravity="right" android:text="Endereco" /> <TextView android:id="@+id/tvTelefone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_alignParentLeft="true" android:layout_below="@+id/tvEndereco" android:text="Telefone" /> </RelativeLayout>
Arquivo BaseDAO.java
package br.com.EscolaDeAndroid.ListSqlite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; //Classe responsável pela criação do Banco de Dados e tabelas public class BaseDAO extends SQLiteOpenHelper { public static final String TBL_AGENDA = "agenda"; public static final String AGENDA_ID = "_id"; public static final String AGENDA_NOME = "nome"; public static final String AGENDA_ENDERECO = "endereco"; public static final String AGENDA_TELEFONE = "telefone"; private static final String DATABASE_NAME = "agenda.db"; private static final int DATABASE_VERSION = 1; //Estrutura da tabela Agenda (sql statement) private static final String CREATE_AGENDA = "create table " + TBL_AGENDA + "( " + AGENDA_ID + " integer primary key autoincrement, " + AGENDA_NOME + " text not null, " + AGENDA_ENDERECO + " text not null, " + AGENDA_TELEFONE + " text not null);"; public BaseDAO(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase database) { //Criação da tabela database.execSQL(CREATE_AGENDA); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //Caso seja necessário mudar a estrutura da tabela //deverá primeiro excluir a tabela e depois recriá-la db.execSQL("DROP TABLE IF EXISTS " + TBL_AGENDA); onCreate(db); } }
Arquivo ListSqliteActivity.java
package br.com.EscolaDeAndroid.ListSqlite; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.CursorAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.Toast; public class ListSqliteActivity extends Activity { private SQLiteDatabase database; private CursorAdapter dataSource; //Atenção: é necessário inserir o PK (chave primária _id) como último campo private static final String campos[] = {"nome", "endereco", "telefone", "_id"}; ListView listView; BaseDAO helper; /** Chamado quando a Activity é exeutada pela primeira vez. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listView = (ListView) findViewById(R.id.listView1); //cria instância da classe BaseDAO, responsável pela criação do Banco de Dados helper = new BaseDAO(this); //executa rotinas internas para abrir/utilizar o banco de dados database = helper.getWritableDatabase(); } public void btnInserir_Click(View v){ //insere dados no banco de dados database.execSQL("INSERT INTO agenda (nome, endereco, telefone) VALUES " + "('Escola de Android', 'R: João Figueiredo, 101', '(99)9999-9999')"); database.execSQL("INSERT INTO agenda (nome, endereco, telefone) VALUES " + "('Projeto Teste', 'Av. Brasil, 500', '(12)3456-78901')"); Toast.makeText(this, "Registros inseridos com sucesso", Toast.LENGTH_SHORT).show(); } public void btnCarregar_Click(View v){ //executa consulta geral de todos os registros cadastrados no banco de dados Cursor contatos = database.query("agenda", campos, null, null, null, null, null); if (contatos.getCount() > 0){ //cria cursor que será exibido na tela, nele serão exibidos //todos os contatos cadastrados dataSource = new SimpleCursorAdapter(this, R.layout.row, contatos, campos, new int[] { R.id.tvNome, R.id.tvEndereco , R.id.tvTelefone }); //relaciona o dataSource ao próprio listview listView.setAdapter(dataSource); }else{ Toast.makeText(this, "Nenhum registro encontrado", Toast.LENGTH_SHORT).show(); } } //método executado quando o usuário clica no botão voltar do aparelho @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); //deleta registros inseridos, simplesmente para limpar essa base que é de teste database.execSQL("DELETE FROM AGENDA"); //fecha a conexão com o Banco de dados database.close(); } }
Abaixo seguem as imagens do projeto em execução.
Para o programa funcionar é preciso primeiro clicar no botão "Inserir registros" com isso será exibida uma mensagem de "Registros incluídos com sucesso", em seguida deve ser clicado no botão
"Carregar registros" para ser exibido a lista dos dados inseridos no Banco de Dados SqLite.
Por enquanto é isso pessoal, espero que gostem e comentem, caso tenham alguma dúvida, crítica ou sugestão é só enviar.
Em breve estarei apresentando mais exemplos sobre SqLite.
Posts relacionados:
Criação de uma Agenda - http://escoladeandroid.blogspot.com.br/2012/02/android-criando-uma-agenda-de-contatos.html
Desenvolvi o jogo Circus Puzzle Free ele é um quebra-cabeça e está publicado no Android Market, agradeço a todos que baixarem, jogarem e comentarem.
Desenv com qualidade!
11 comentários:
TE AMOOOO!!!!
Oi galera, fis o btnCarregar_Click();
que tem ai, mais não consigo mostrar os dados que tenho no banco, já fis um monte de tutorial mais nenhum em nenhum deles funcionou, auguem pode me dar uma ajuda?
Andersom,
Qual erro ocorre?
Alguns pontos que podem causar erros:
no arquivo main.xml existe o atributo click conforme exemplo:
android:onClick="btnCarregar_Click"
No arquivo ListSqliteActivity.java o método está exatamente igual ao atributo do arquivo xml, inclusive letras maiúsculas e minusculas:
public void btnCarregar_Click(View v)
Ou o erro é de banco de dados?
Obrigado pela visita.
Olá Marcio, consigo realizar este procedimento também com um adapter? grato!
Mas luiz como eu crio uma tabela com estados e paises
de modo que eu a selecionar um determinado país e um determinado estado, na outra tela me apareça as informações desse estado?
Por favor, faça um exemplo usando alguns estados brasileiros
Eu estarei usando spinner e não edit text
Como crio tabelas com estados e paises dentro de um banco de dados? Pode fazer um exemplo na resposta?
E como eu faço para a query filtrar os resultados??
Queria exemplo
Olá Marcio de Souza, estava vendo aqui seus tutoriais, são muito bom mesmo cara. Precisava de uma ajuda, nesse tuturial que vc ensina sobre "Carregando ListView com SqLite" tentei de toda forma colocar um check para poder marcar a linha tipo:
---------------
NOME
[x] ENDERECO
TELEFONE
---------------
NOME
[x] ENDERECO
TELEFONE
---------------
NOME
[x] ENDERECO
TELEFONE
---------------
quero colocar um checkbox para cada grupo de 3 linhas que contem o nome, endereço e telefone...
Se possível entre em contato por favor:
email: lucas-siqueira@outlook.com
E se eu tiver 1000 nomes na agenda?
se exibir todos os dados pesará e muito.
Como faço para mostrar somente o(s) nome(s) que digitar?
Boa tarde a todos, primeiramente gostaria de parabenizar o Blog, esta ótimo, mas infelizmente toda vez que tento carregar o projeto para o emulador, nele esta sempre me retornando a seguinte mensagem de erro : "unfortunately myapp has stopped"
coincidentemente somente quando tendo rodar projeto que esteja vinculado com banco de dados, sou novo nessa area de desenvolvimento para android, alguem poderia me ajudar ?
desde de já agradeço a todos.
Amigos, querendo saber como fazer um upload de um arquivo .pdf para o sqlite e a leitura do mesmo. Desde já agradeço quem poder ajudar...
Postar um comentário