2

我是使用 android 编程的新人,在做我的第一个应用程序时,我的列表有问题。这里的代码:

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 列。这就是我写“getString(0)”的原因,因为我只想显示每行的 1 列。

4

3 回答 3

0

使用CursorAdapter而不是 ArrayListAdapter。通过将光标复制到数组中只是为了将其提供给 ListView,您正在为自己做额外的工作。 这是 CursorAdapters 的教程

于 2011-03-16T20:04:13.583 回答
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_1是 ListView 中每一行的布局, new String[]{"nombre"}光标中的字段名称,其值设置为 ListView 行中的 TextViews。最后一个参数中指定的 TextView idnew int[]{android.R.id.text1}

于 2011-03-16T20:03:53.050 回答
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 回答