问题标签 [android-loader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何使用 Cursor & Loader 进行自定义排序的 SQL 数据?
我在 SQLite 数据库中有一些数据,我想在列表视图中提供基本的搜索功能。
这是我希望能够解决的搜索查询示例:
1)sqlite数据示例:
- 广告
- 公元前
- 光盘
- d
- 大
- 欧共体
2)输入和想要的输出:
- a -> [ 广告 , da ]
- d -> [ d , da , 广告 , cd ]
- c -> [ cd, bc , ec ]
我已经想到了一些事情,但没有什么好说的:
- 全文搜索:我无法修改输入数据库文件,所以我认为我无法使用它
- 一个 sqlite 查询(
name LIKE ?% OR name LIKE %?%
):未排序。也许可以找出我不知道的另一个查询 - 两个不同的查询(
name LIKE ?%
然后name LIKE %?%
):但是如何用内容提供者来实现呢?游标包装?合并光标?自定义加载器?
我看过很多例子,但对我的自定义搜索没有任何用处。
谢谢你的帮助。
编辑:查询d
应该给出[d,da,ad,cd]。
我想要的自定义排序顺序是: LIKE pattern% AND 然后 LIKE %pattern% (例如socks
应该在之前a pair of socks
)
android - 在返回之前不会在屏幕外片段上调用 onLoadFinished
我正在尝试使用详细信息分页来实现 List->Detail 方案。
我有 ListView 的单个 Activity 和 ViewPager 的不同 Activity。在 FragmentStatePagerAdapter.getItem 中,我为页面创建新片段并通过 setArguments Bundle 传递项目 ID。
打开 pager Activity 后,会创建两个 Fragment 页面并调用 onCreate、onCreateView、onActivityCreated。
但
仅对第一个 Fragment(当前可见)调用 onLoadFinished。如果我回去 onLoadFinished 被称为第二个片段。
奇怪的是,当我滑动到第二个(onLoadFinished 表示第三个未调用)时,返回第一个并再次前进到第二个 OnLoadFinished 被称为第三个片段并且每个下一个 - 在来回后总是下一个片段被完全创建提前.
这是错误还是功能?可以强制加载多少?
android - Android:当我打开应用程序时,它会显示几秒钟的白屏
当我打开应用程序时,它会显示几秒钟的白屏以启动服务和所有其他操作。
我可以通过使用自定义启动/加载屏幕加载程序或任何其他方法来避免它吗?我可以把那个代码放在哪里?
帮助我,谢谢提前..
android - 除非我在 loadInBackground 中返回一个新对象,否则 AsyncTaskLoader 不会调用 onLoadFinished
我有AsyncTaskLoader<List<String>>
一个成员变量List<String>
mAddresses。在loadInBackground
,如果我创建一个新对象,填充它,然后返回它;onLoadFinished
按预期调用,所以我可以更新适配器,从而更新视图。
但是,如果我尝试使用相同的变量,即使它的值发生变化也会onLoadFinished
被调用:
任何人都可以对此发表评论吗?我是否应该创建一个新对象以每次都像这样返回?是否可以设置任何标志“对象已更改,因此即使它是同一个对象,请确保执行所有更新?
android - 正确通知 AsyncTaskLoader 关于后台线程的数据更改
我想AsyncTaskLoader
为我的自定义数据源实现:
DataSource
将保留已注册观察员的名单,并将通知他们有关更改。CustomLoader
将实施DataSourceObserver
。问题是如何正确通知CustomLoader
,因为Loader.onContentChanged()
必须从 UI 线程调用,但在我的情况下,DataSource
操作(和对 的调用DataSourceObserver.onDataChanged()
)将从后台线程完成。
更新了 Selvin 提示的想法:
android - 什么是支持 3.0 之前的设备和没有它的 3.0 之后的最佳编码策略?
一些库有 2 个实现:一个用于原生 3.0 API,另一个用于 ACL 支持。例如 Mark Murphy 对 Loader 框架的增强。https://github.com/commonsguy/cwac-loaderex
那么如何应对呢?
android - Android Loader,为什么restartLoader不刷新我的Listview?
我正在尝试执行以下操作
第 5 点之前的一切都有效。
所以我需要在添加项目后重新启动加载程序的帮助。
因此,在将数据添加到我正在调用的数据库中之后:
getLoaderManager().restartLoader(ID, null, MyFragment.this);
在 Loader 方法中,我只是这样做:
调用此方法时,ListView 将变为空白。列表中的所有先前项目都将消失。
如果我退出我的活动并再次返回,SimpleCursorAdapter 将使用数据库中添加的项目填充 ListView。
所以我知道它们已正确添加。
但是在我调用restartLoader 后它没有显示。
有谁知道我如何使用 Loader 刷新 listView ?
我应该在之后打电话吗
还是我需要在 onLoaderReset 方法中使用更聪明的方法?
请问有什么提示和指点吗?
谢谢 !!!
android-loadermanager - 为什么要使用 restartLoader() 呢?
如果 loader 已经隐式监听数据库中的任何更新,我们为什么要使用 restartLoader()?我们是否使用它来重用相同的加载器来发送不同的查询?
android - 无法重新启动 android AsyncTaskLoader
在 onCreate() 中初始化 Loader 并在按下按钮时重新启动 Loader 的简单代码。关于 android 文档 getLoaderManager().restartLoader() 应该在这个管理器中启动一个新的加载器或重新启动一个现有的加载器。但是每次当我按下按钮并调用restartLoader时,它都会创建新的AbstractLoader。
Android 文档中的 LoaderManager.restartLoader()
这是 AbstractLoader 代码:
我需要 mResult 值,因为我只想在 5 分钟内加载一次数据,而在另一种情况下我想返回以前的结果。我的问题是:即使我在 onCreate 中使用 initLoader 创建了具有相同 ID 的加载器,为什么还要使用“restart”重新创建加载器。谢谢
android - ListFragment 中的列表在搜索时重叠
我正在使用 ListFragment 和加载器以及 CursorAdapter 显示一个列表。这个列表有一个搜索框,所以当用户搜索某些东西时,我只显示那些包含搜索字符串的记录。现在我面临的问题是最初显示的列表与搜索后创建的列表重叠,即第一个列表作为第二个列表的背景。以下是我处理搜索的方式:每次提交一些搜索文本时,我使用 getLoaderManager().restartLoader() 重新启动加载程序,并在 onLoadFinished() 中创建 CursorAdapter 的新实例。我无法弄清楚列表重叠问题的原因。请帮忙。(我本来想提供代码,但由于公司政策我不能,真的很抱歉。)