我有一个包含10,000个条目的数据库。数据库不会定期更新,但我需要经常从中获取数据。
我给选择行的一个选项是带有文本过滤的ListView。
但 ListView需要几秒钟才能加载。此时间用于查询数据库并将Cursor的结果放入List中。因此,我决定在数据库更新时创建列表,并在每次我想创建ListView时使用它。
我需要有关如何存储List的指示,以便我可以立即检索它并显示ListView。
您也可以提供任何替代方案。
更新:
我的初始代码:
public List<String> fetchNames() {
String[] columns={NAME_KEY};
List<String> names = new ArrayList<String>();
Cursor namesCursor=mydb.query(TABLE_NAME, columns, null, null, null, null, NAME_KEY, null);
Log.w("1", "Got query result");
namesCursor.moveToFirst();
while(!namesCursor.isAfterLast()){
names.add(namesCursor.getString(0));
namesCursor.moveToNext();
}
Log.w("1", "List created");
return names;
}
记录“获取查询结果”和“创建列表”之间大约需要5秒钟。
我修改了代码以使用CursorAdapter
public SimpleCursorAdapter fetchNames() {
String[] columns={"_id", NAME_KEY};
String[] from={NAME_KEY};
int[] to={R.id.list_item_1};
Cursor namesCursor=mydb.query(TABLE_NAME, columns, null, null, null, null, NAME_KEY, null);
Log.w("1", "Got query result");
SimpleCursorAdapter names = new SimpleCursorAdapter(dbContext, R.layout.list_item, namesCursor, from, to);
Log.w("1", "Returning CursorAdapter");
return names;
}
活动仍然需要5秒才能加载,但仅在记录“返回CursorAdapter”之后。
我觉得延迟是从光标中取出,这就是为什么我想将它存储为可快速获取的资源。如果我认为作为资源中的字符串数组,它会加载得更快,请纠正我。