【发布时间】:2015-07-30 02:23:51
【问题描述】:
我打算用 SimpleAdapter 将数据从数据库加载到 ListView,就像:
private void loadData() {
// TODO Auto-generated method stub
Cursor cursor = mHelper.getReadableDatabase().rawQuery(
"select * from dict", null);
int wordIndex = cursor.getColumnIndex("word");
int detailIndex = cursor.getColumnIndex("detail");
int flagIndex = cursor.getColumnIndex("flag");
**(1)**//Map<String,String>map = new HashMap<String,String>();
//map defined here, items are all the last record
for (cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
**(2)**Map<String,String>map = new HashMap<String,String>();
if(cursor.getString(wordIndex)==null) break;
// Log.d(tag,"word: "+cursor.getString(wordIndex));
map.put("word", cursor.getString(wordIndex));
// Log.d(tag,"detail: "+cursor.getString(detailIndex));
map.put("detail", cursor.getString(detailIndex));
// Log.d(tag,"flag: "+cursor.getString(flagIndex));
map.put("flag", cursor.getString(flagIndex));
listItems.add(map);
}
cursor.close();
}
listItems 定义为ArrayList<Map<String, String>> listItems;
当我将 Map 定义为 1 时,其中 map 在 for 循环之外,listItems 保留最后一个的 listItems.length 记录,而 map 定义为 2,listItems 保留 listItems.length 记录作为数据库。 有人能告诉我为什么吗?我会很感激你的回答!
【问题讨论】:
标签: android simpleadapter