每当数据发生变化时,新的SimpleCursorAdapter?

时间:2011-07-10 05:25:30

标签: java android simplecursoradapter

我刚刚开始使用Android开发,并且正在构建一个使用ListActivitySQLiteDatabaseSimpleCursorAdapter的简单应用。

在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 ++世界,并且每次从数据库中插入/删除行时都会看到这个“新”对象看起来有点笨拙。

1 个答案:

答案 0 :(得分:0)

是的,你是对的。你可以看到很多次。对于在onResume中始终创建列表时可能不会产生任何问题的小列表。但这不是好风格。您可以使用cursor.changeCursor()或adapter.notifyDataSetChanged()。