gpt4 book ai didi

android - 如何在 notifyChange 后更改 Loader 中的查询

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:03 25 4
gpt4 key购买 nike

我已经尝试了几个小时,但无法实现。我尝试通过 Bundle、通过静态变量、通过 if 语句发送,但没有任何效果。

我有一种情况,我希望我的加载程序在用户单击菜单项后加载不同的数据集。这意味着一旦收到 notifyChange 就应该更改查询。该代码是非常标准的 Loader 代码,如下所示:

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String query = args.getString("query");

String[] projection = { DbCreate.ID, DbCreate.COL_ITEM, DbCreate.COL_STATUS, DbCreate.COL_SYNCED,
DbCreate.COL_PRIORITY, DbCreate.COL_COMPLETEBY, DbCreate.COL_TAG, DbCreate.COL_ASSIGNED, DbCreate.COL_SHARED};

CursorLoader cursorLoader = new CursorLoader(getActivity(),
DbProvider.CONTENT_URI_DATA, projection, query, null, "priority DESC, status ASC, _id DESC");

return cursorLoader;
}

我也在这个 onCreate 方法中尝试了通常的 if(...) 语句,但它不起作用。这意味着 notifyChange 只触发已经创建的对象。那么如何在 notifyChange 上注入(inject)一个新的“查询”值呢?

最佳答案

我在我的代码中做同样的事情,当你想更改数据通知时,你需要再次重新启动游标加载器,而不是在游标加载器上工作

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {
// This is called when a new Loader needs to be created.
// Now create and return a CursorLoader that will take care of
// creating a Cursor for the data being displayed.
Uri contentUri = MyContentProvider.CONTENT_URI_FACEBOOK;
switch (id) {
case FACEBOOK:
contentUri = MyContentProvider.CONTENT_URI_FACEBOOK;
break;
case LINKEDIN:
contentUri = MyContentProvider.CONTENT_URI_LINKEDIN;
break;
}

return new CursorLoader(getActivity(), contentUri, null, null, null,
null);

}

对于各种查询,我只是这样做

getLoaderManager().restartLoader(FACEBOOK, null, Profile.this);
getLoaderManager().restartLoader(LINKEDIN, null, Profile.this);

所以你只需要重启loader

关于android - 如何在 notifyChange 后更改 Loader<Cursor> 中的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17756672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com