我已经尝试了几个小时,但无法做到这一点.我尝试通过Bundle,通过静态变量,通过if语句发送,但没有任何工作.
我有一种情况,我希望我的Loader在用户点击菜单项后加载不同的数据集.这意味着一旦收到notifyChange,就应该更改查询.代码是非常标准的Loader代码,如下所示:
@OverrIDepublic 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上注入一个新的’query’值呢?
解决方法:
我在我的代码中做同样的事情你需要重新启动游标加载器当你想要改变数据通知工作适配器而不是游标加载器
@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);
所以你只需要重新启动加载器
总结以上是内存溢出为你收集整理的android – 如何在notifyChange之后更改Loader中的查询全部内容,希望文章能够帮你解决android – 如何在notifyChange之后更改Loader中的查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)