我是使用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列。
答案 0 :(得分: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);
然后您不必单步执行并自行构建列表。
答案 1 :(得分: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。在最后一个参数new int[]{android.R.id.text1}
答案 2 :(得分:0)
使用CursorAdapter而不是ArrayListAdapter。您可以通过将光标复制到数组中来将其提供给ListView,从而为自己做额外的工作。 Here is a tutorial on CursorAdapters