segunda-feira, 7 de novembro de 2011

ListActivity + SQLite - Como criar uma lista no Android

ListActivity + SQLite - Como criar uma lista no Android

Primeiro criaremos uma ListActivity, essa é a parte fácil, vamos criar um novo projeto, e ele vai criar automaticamente a Activity base, nela vamos alterar a linha "extends Activity" para "extends ListActivity", agora precisamos alterar o layout, abra o main.xml, e adicione um ListView, para funcionar corretamente o ListView da ListActivity tem que ter a propriedade (android:id="@android:id/list").

public class NossaLista extends ListActivity {


}

Pronto, temos nossa ListActivity, agora como podemos populá-la? Isso é bem simples, primeiro crie uma variável do tipo SQLiteDatabase, essa é a nossa conexão com o banco de dados, agora vamos abri-la com o comando (openOrCreateDatabase())

public class NossaLista extends ListActivity {
        private SQLiteDatabase database;


        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                database = openOrCreateDatabase("Data.db", SQLiteDatabase.CREATE_IF_NECESSARY,
                        null);
        }


}


Agora, temos que criar o SQL que irá criar a tabela com a qual iremos trabalhar, lembrando que para funcionar com o CursorAdapter você SEMPRE irá precisar do campo "_id" na sua tabela.


public class NossaLista extends ListActivity {
        private SQLiteDatabase database;
        private final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS tabela ( " +
                                                                            "_id INTEGER, " +
                                                                            "descricao TEXT);";
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                database = openOrCreateDatabase("Data.db", SQLiteDatabase.CREATE_IF_NECESSARY,
                        null);
                database.execSQL(CREATE_TABLE);
        }


}


Pronto, já temos nossa tabela criada, agora vamos criar nosso cursor e nosso adapter.


public class NossaLista extends ListActivity {
        private SQLiteDatabase database;
        private Cursor cursor;
        private SimpleCursorAdapter adapter;
        private final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS tabela ( " +
                                                                            "_id INTEGER AUTOINCREMENT, " +
                                                                            "descricao TEXT);";
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                database = openOrCreateDatabase("Data.db", SQLiteDatabase.CREATE_IF_NECESSARY,
                        null);
                database.execSQL(CREATE_TABLE);
                database.execSQL("insert into tabela (descricao) values ('teste1');");
                database.execSQL("insert into tabela (descricao) values ('teste2');");
                cursor = data.query("tabela", new String[] {"_id", "descricao"}, null, null, null, null, null);
                adapter = new SimpleCursorAdapter(this, R.layout.itens, cursor, 
                                                new String[] {"descricao", "_id"}, new int[] {R.id.textView1});
                setListAdapter(adapter);
       }
}


Pronto, agora está pronta nossa ListActivity trabalhando com SQLite. Lembrando que temos que criar um layout chamado itens.xml, com um textView com o id textView1 para funcionar normalmente. Reparem que troquei a ordem das colunas, isso é porque a ordem das colunas na criação do adapter mostra aonde vai "bindar" o campo, se trocassemos ao invés de aparecer a coluna "descricao" no textView iria aparecer a coluna "_id"

Nenhum comentário:

Postar um comentário