【问题标题】:Writing Data managed by a LoaderManager写入由 LoaderManager 管理的数据
【发布时间】:2012-03-07 17:50:57
【问题描述】:

当使用 LoaderManager 时,我是否仍然像过去那样管理我的数据库写入并让 Loader 接收更改?我正在为应用程序转换和添加功能,但我仍在习惯 Android 平台。

【问题讨论】:

    标签: android android-loadermanager


    【解决方案1】:

    如果您使用CursorLoader,并且您通过与CursorLoader 一起使用的ContentProvider 进行所有数据库更新,加载程序及其Cursor 将收到更改通知,因此一切都会为您处理.

    如果您不使用CursorLoader,您有责任以某种方式更新您自己的Cursor。例如,我的LoaderEx 项目有一个SQLiteCursorLoader,它直接与SQLiteOpenHelper 一起工作,它在Loader 上提供insert()update()delete()execSql() 方法,因此我们可以更新相应的光标。

    【讨论】:

    • 谢谢,这有助于解决我的一些问题。我打算使用我的 DBAdapter 类返回的 ArrayList 并使用自定义加载器,但我想我只会转换为 contentprovider 并继续使用该模型。
    • 实际上我回去重新阅读了第 18 章,现在我对您所指的内容有了一个很好的了解。再次感谢您。
    • 随着我深入研究,还有一个问题;是否可以扩展SQLiteCursorLoader 并覆盖buildCursor 或添加一个新功能以使用db.getReadableDatabase().query?所以我可以利用我拥有的代码,或者简单地获取从我已经构建的 DBAdapter 帮助类返回的游标。
    • @ewjames:我自己从不使用query(),所以我用rawQuery()来抓挠我的痒。但是您可以增加SQLiteCursorLoader 以拥有额外的数据成员和不同的构造函数,buildCursor() 检查数据成员并酌情执行query()rawQuery()。欢迎使用补丁。 :-)
    • 我实施了一个开箱即用的解决方案来弄湿我的脚,我遇到了一个问题,所以我提出了一个新问题here
    猜你喜欢
    • 2012-04-30
    • 2023-03-21
    • 2012-01-28
    • 2020-12-18
    • 2022-07-16
    • 2020-11-22
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多