【问题标题】:Is the Loaders only for reading data from the database and not for updating and deleting data?加载器是否仅用于从数据库中读取数据而不用于更新和删除数据?
【发布时间】:2013-05-29 14:40:51
【问题描述】:

我是一名 Android 新手,目前正在尝试转换我的应用,以便它使用 Loaders 与数据库交互,以便我可以在后台工作。

我已经有了一些查询和更新数据库的方法,所以我正在考虑将它们全部移到 OnCreateLoader 方法中。

唯一的问题是 OnCreateLoader 方法期望返回一个 CursorLoader 并且 CursorLoader 会自动调用 ContentResolver 的查询方法。

public Loader<Cursor> onCreateLoader(int id, Bundle args) {

我应该如何让 CursorLoader 调用 ContentResolver 的更新或插入方法?

或者我不应该对这些查询使用加载器?

【问题讨论】:

    标签: android loader


    【解决方案1】:

    Loaders 用于读取数据 - AsyncQueryHandler 是专为轻松插入/更新/删除而设计的内置类:

    new AsyncQueryHandler(context.getContentResolver()){
        @Override
        onInsertComplete(int token, Object cookie, Uri uri)
        {
            // Insert completed successfully
        }
    }.startInsert(0,    // token, used to distinguish inserts in onInsertComplete
                  null, // cookie, used to distinguish inserts in onInsertComplete 
                  uri,  // URI to update
                  initialValues); // ContentValues to pass to your ContentProvider
    

    【讨论】:

      【解决方案2】:

      截至目前,CursorLoader 仅支持读取数据。如果您想更新数据,您可能需要考虑编写自己的 AsyncTaskLoader

      或者,查看CWAC LoaderEx,它似乎已经为您完成了所有这些工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-14
        • 1970-01-01
        • 2014-06-09
        • 2020-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多