【发布时间】:2014-05-12 14:16:39
【问题描述】:
我正在尝试使用 2 个数据库列进行列表视图。我成功了,但我的问题是只有数据库的第一个信息出现在列表视图中。如果我在数据库中有 x 数据,它将在列表视图中显示 x 行,只有第一个条目。
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
data = new ArrayList();
Cursor cursor = mydb.rawQuery("SELECT * FROM projeto", null);
if (cursor.moveToFirst()) {
Toast.makeText(getApplicationContext(), "Caminhos:", 3000).show();
data.clear();
do {
data.add(cursor.getString(cursor.getColumnIndex("id_proj")));
data.add(cursor.getString(cursor.getColumnIndex("nome")));
map.put("id", data.get(0).toString());
map.put("nome", data.get(1).toString());
map.put("hora", "17:00");
mylist.add(map);
} while (cursor.moveToNext());
SimpleAdapter resul = new SimpleAdapter(MainActivity.this, mylist,R.layout.list_item,new String[] {"id", "nome", "hora"}, new int[] {R.id.i, R.id.n, R.id.h});
lista.setAdapter(resul);
【问题讨论】:
-
我看到了那个帖子,它没有帮助我:(
-
你为什么不使用
CursorAdapter?跳过将所有数据传输到地图和列表之类的步骤,只需直接使用光标即可。事实上,名为data的 ArrayList 在这里是没有用的——你添加到它,然后在将值放入映射时从它读取,而你最初可以直接添加到映射中。
标签: android android-listview arraylist simplecursoradapter