【问题标题】:CRUD using LoaderManager and CursorAdapter使用 LoaderManager 和 CursorAdapter 的 CRUD
【发布时间】:2014-03-03 01:02:39
【问题描述】:

我有一个使用MyCursorAdapterMyListFragment 实现。顾名思义,它们都扩展了各自的 Android 类。

我通读了this Loader/LoaderManager tutorial。所以,现在我的查询发生在

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
        return new CursorLoader(blah1, blah2, blah3, blah4, blah5, blah6);
}

LoaderManagerLoader 一起负责何时重新查询和更新,为查询运行单独的线程,同步而无需我担心。到目前为止,一切都很好。

我有两个问题:

1) 我已经实现了MyContentProvider。这体现在哪里?
-> 上面的new CursorLoader(......) 似乎通过MyContentProvider 进行查询,因为它使用URI 作为第一个参数。

2) 我还需要删除/更新/插入列表中的项目。我是否应该在所需的位置从MyContentProvider 内部的MyListFragment 调用我各自的方法?如果是,那么我是否也可以手动装载物品,而不需要装载机处理它?如果不是,那么正确的方法是什么?我在网上没有找到任何信息。任何指针表示赞赏。

【问题讨论】:

    标签: android android-contentprovider android-loadermanager


    【解决方案1】:
    1. 是的,没错,它将使用CursorLoader 构造函数中使用的参数调用MyContentProvider 中的查询方法。

    2. 1234563使用CursorLoader的全部要点)。使用CursorLoader 时,您应该尽量避免手动更改数据,以便显示的内容始终反映来自MyContentProvider 的当前数据集。

    【讨论】:

    • 啊,好的。感谢您的回答!这就说得通了。我没有使用ContentResolver.notifyChange(),所以想知道将装载机放在两者之间有什么意义。但现在我明白了,一切都已连接!
    • 但是如果在我当前的 CursorLoader 中,我还更新了一些属于同级片段的数据。那没有得到更新。看起来我仍然缺少一些东西。
    • 只要为片段正在使用的 URI 调用 notifyChange,就应该更新它。
    • 我明白了。同级片段使用不同的游标加载器,尽管通过内容解析器调用 notifyChange()。我只是弹出当前片段以回到这个兄弟姐妹。我应该在这里做点什么吗?
    • 不,但还有其他事情需要检查,例如,CursorLoaders 是否都有唯一的 ID?您是否正确管理片段生命周期事件?等
    猜你喜欢
    • 2016-08-20
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    相关资源
    最近更新 更多