我刚刚开始使用Android开发,并且正在构建一个使用ListActivity
,SQLiteDatabase
和SimpleCursorAdapter
的简单应用。
在Android开发者网站上有一个示例项目,演示了SimpleCursorAdadpter
的用法。查看实现,每当基础数据库因某些用户操作而被修改时,ListActivity
显式调用以下函数来“刷新”列表:
private void fillData() {
// Get all of the rows from the database and create the item list
mNotesCursor = mDbHelper.fetchAllNotes();
startManagingCursor(mNotesCursor);
// Create an array to specify the fields we want to display in the list (only TITLE)
String[] from = new String[]{NotesDbAdapter.KEY_TITLE};
// and an array of the fields we want to bind those fields to (in this case just text1)
int[] to = new int[]{R.id.text1};
// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.notes_row, mNotesCursor, from, to);
setListAdapter(notes);
}
看起来每次都会创建一个新的SimpleCursorAdapter
并使用setListAdapter()
绑定到该视图。这是最好/最干净的实施吗?这个在Android网站上的事实赋予它很大的可信度,但是我查看了CursorAdapter
文档,看到有一个changeCursor()
方法似乎比一个更清晰的实现以上,但我不确定那可能是什么样的。
也许我只是在烦恼,但是来自C / C ++世界,并且每次从数据库中插入/删除行时都会看到这个“新”对象看起来有点笨拙。
答案 0 :(得分:0)
是的,你是对的。你可以看到很多次。对于在onResume中始终创建列表时可能不会产生任何问题的小列表。但这不是好风格。您可以使用cursor.changeCursor()或adapter.notifyDataSetChanged()。