2

私はアンドロイドを使った新しいプログラミングで、最初のアプリケーションを実行すると、リストに問題が発生しました。ここにコード:

Cursor c = db.rawQuery("SELECT nombre FROM contactos", null);

        ArrayList<String> listaArray = new ArrayList<String>();
        ListView listadoContactos = (ListView)findViewById(R.id.listViewListaContactos);

        if (c.moveToFirst())
        {
            do {
                listaArray.add(c.getString(0));
            } while(c.moveToNext());
        }

        //Creamos un adaptador y lo asignamos al ListView.
        ArrayAdapter<String> adaptadorLista = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listaArray);

        listadoContactos.setAdapter(adaptadorLista);

結果を見ると、リストには、クエリしているデータベースの最初の項目のみが表示されます。助けてくれませんか?

アドバイスありがとう!ジョージ。

PS: 「nombre」は列 0 です。各行の 1 列を表示したいだけなので、「getString(0)」と書いているのはそのためです。

4

3 に答える 3

0

SimpleCursorAdapter を使用して、カーソルを直接渡すことができます。

Adapter adapter = new SimpleCursorAdapter(
    this,
    c,
    android.R.layout.simple_list_item_1,
    new String[] { "nombre" },
    new int[] { android.R.id.text1 },
    0);
listadoContactos.setAdapter(adapter);

手順を踏んで自分でリストを作成する必要はありません。

于 2011-03-16T20:00:01.353 に答える
0

SimpleCursorAdapter を使用してみてください

// NOTE your query result should have id-field, named "_id"
    Cursor c = db.rawQuery("SELECT nombre, nombre_id as _id FROM contactos", null);

    SimpleCursorAdapter adaptorLista = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, new String[]{"nombre"}, new int[]{android.R.id.text1} );
            listadoContactos.setAdapter(adaptadorLista);

android.R.layout.simple_list_item_1ListView の各行のレイアウト、 new String[]{"nombre"}値が ListView 行の TextViews に設定されているカーソル内のフィールドの名前を次に示します。最後の引数で指定された TextView idnew int[]{android.R.id.text1}

于 2011-03-16T20:03:53.050 に答える
0

ArrayListAdapter の代わりにCursorAdapterを使用します。カーソルを Array にコピーして ListView にフィードするだけで、余分な作業を自分で行うことができます。 ここに CursorAdapters のチュートリアルがあります

于 2011-03-16T20:04:13.583 に答える