Listview com SQlite

Bom dia…

Estou começando no java(Android) e não sei como resolver isso…

Estou carregando um listView com os registros de uma tabela… porém o list não carrega.

usando o Toast, fica claro que tem registros, mesmo assim… o list permanece vazio… O que pode ser?

Segue o fonte…

//---------------------------------------------------------------------------------
main.xml
//---------------------------------------------------------------------------------

[CODE]

<?xml version="1.0" encoding="utf-8"?>






[/CODE]

//---------------------------------------------------------------------------------
mostradados.xml
//---------------------------------------------------------------------------------

[CODE]

<?xml version="1.0" encoding="utf-8"?>




[/CODE]

//---------------------------------------------------------------------------------
ListTesteActivity .java
//---------------------------------------------------------------------------------

[CODE]
package br.teste.testelistview;

import android.app.Activity;
import android.os.Bundle;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.widget.ListView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class ListTesteActivity extends Activity {

/** Called when the activity is first created. */
ListView lst_teste;
SimpleCursorAdapter AdapterLista;
Button btsalvar;
EditText ednome;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

criabanco();

ednome = (EditText) findViewById(R.id.ednome);
lst_teste = (ListView) findViewById(R.id.lista);

btsalvar = (Button) findViewById(R.id.btsalvar);
btsalvar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0)
{
gravabanco(ednome.getText().toString());
listabanco();
}
});
}

public void criabanco(){

SQLiteDatabase db;
db = openOrCreateDatabase(“dbTeste”,SQLiteDatabase.CREATE_IF_NECESSARY,null);

String tabela_script = null;

tabela_script = “CREATE TABLE if not exists tbTeste (”;
tabela_script = tabela_script + " _id TEXT, “;
tabela_script = tabela_script + " nome TEXT);”;
db.execSQL(tabela_script);

db.close();
}

public void gravabanco(String xNome){

SQLiteDatabase db;
db = openOrCreateDatabase(“dbTeste”,SQLiteDatabase.OPEN_READWRITE,null);

String tabela_script = null;
tabela_script = "Insert into tbTeste (_id, nome) ";
tabela_script = tabela_script + " values “;
tabela_script = tabela_script + " (‘1’,’” + xNome + “’);”;
db.execSQL(tabela_script);

db.close();

}

public void listabanco(){

String [] x = {“nome”};

SQLiteDatabase db;
db = openOrCreateDatabase(“dbTeste”,SQLiteDatabase.OPEN_READONLY,null);
//Cursor cursor = db.rawQuery(“Select * from tbTeste”, null);
Cursor cursor = db.query(“tbTeste”, null, null, null, null, null, null);

if (cursor.getCount() > 0)
{
cursor.moveToFirst();

while (cursor.moveToNext()){
Toast.makeText(getApplicationContext(), cursor.getString(cursor.getColumnIndex(“nome”)).toString(), Toast.LENGTH_SHORT).show();
}

AdapterLista = new SimpleCursorAdapter(this, R.layout.mostradados, cursor, x,
new int[] {R.id.txt_lista});

lst_teste.setAdapter(AdapterLista);
}
cursor.close();
db.close();
}
}

[/CODE]

Opa, boa tarde!

Olha, eu confesso que não costumo usar SimpleCursorAdapter, prefiro usar ArrayAdapter customizado.
Mas pode ser porque você utiliza o cursor.moveToNext() na iteração, fazendo passar todos os dados (registros), e só então cria seu Adapter, ou seja, seu cursor já estará vazio.

Utilize o cursor.moveToFirst() e já utilize a criação do Adapter (não precisa desse while).

DICA: Utilize a tag [URL] para postar seus códigos, fica mais legível para os programadores… :smiley:

Opa…

Obrigado pela ajuda…

O While eu só coloquei pra confirmar se tem registros mesmo! uma vez que a grid fica vazia…

ArrayAdapter??

Eu fiz umas pesquisas mas… como estou começando no java a Sintaxe as vezes assusta!! kk…

Como usa a [Tag] ?
é só colocar no inicio do texto?

então a ArrayAdapter trabalha com parâmetros mais simples, exemplo:

você pode querer criar uma lista customizada, com linhas customizadas (com 2 edittext’s e 1 checkbox, por exemplo), ou simplesmente querer preencher uma lista passando uma array de String ou uma lista de String ( List )… são casos onde a ArrayAdapter se ajusta melhor (pelo menos, na minha opinião), com ela você pode criar uma Adapter customizada, exemplo:

[code]public class MinhaAdapterCustomizada extends ArrayAdapter {

}[/code]

Acredite, é mais fácil do que parece… Você vai se acostumando!

Mas dá uma olhada neste link explicando o uso de um Custom ArrayAdapter, espero que seja util :smiley:

http://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/

Sobre a tag, eu me equivoquei, use a tag [CODE]…

Exemplo:

[CODE]public class MeuExemploDeTag {

}[/CODE]

Apenas use o code com letras minúsculas.

Opa!!

Coloquei a tag mas acho que não mudou nada!!

Brother… abri o link que vc me passou… vou dar uma estudada,
Desde ja obrigadão pela força…

Java eu não posso te ajudar… mas se precisar de ajuda com oracle, sql… da um toque…

Abs

Então a tag você tem que usar CODE com letras minúsculas…

Opa, beleza! Qualquer coisa eu te dou um toque! :smiley:

Abraços, good code!

Opa!!

Deu certo brother!!! Consegui!!

Mais uma vez obrigado!!

Abs