问题标签 [android-loadermanager]

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.

0 投票
3 回答
27714 浏览

android - 具有多个加载器的 LoaderManager:如何获得正确的光标加载器

对我来说,如果您有多个加载器,则不清楚如何获得正确的光标。假设您定义了两个不同的 Loader:

然后在onCreateLoader()你根据 id 做不同的事情:

到目前为止,一切都很好。但是如何在onLoadFinished()中获得正确的光标,因为您没有任何 id 来识别正确的 Cursoradapter 的正确 Cursor。

还是我错了,这是在一个片段中获取两个不同光标适配器的结果的错误方法。

0 投票
2 回答
1257 浏览

android - 从 ListAdapter 或 SimpleCursorAdapter 填充列表视图

我正在制作一个新的 Android 应用程序,它基本上反映了我们网站上可用的数据。GUI 将显示ListView每个项目中的图像和文本,或者RelativeLayout显示单个项目的详细信息。

为了提高这个应用程序的响应能力,如果数据足够新,我想从内部数据库读取数据,如果内部数据太旧,我想从服务器的 API(通过 http 的 JSON)读取数据(然后填充带有新数据的内部数据库)。

SimpleCursorAdapter从基本教程来看,从内部数据库读取时似乎应该使用数据库和(*)。但是当从网上阅读时,我想我会使用ArrayListand ArrayAdapter

是否有某种类型的适配器可以处理这两种情况?

(*) 我知道最新的事情是将 LoaderManager 与 CursorLoader 一起使用,但我正在尝试支持 Android 2.1。我想我可以将 SimpleCursorAdapter 放入 AsyncTask 并避免 ANR。

0 投票
3 回答
4436 浏览

android - 我要使用什么 CursorAdapter?

CursorAdapter 有 3 个构造函数。让我们看看指南和参考。

1)CursorAdapter(上下文上下文,光标c)

此构造函数已弃用。不鼓励使用此选项,因为它会导致在应用程序的 UI 线程上执行游标查询,从而导致响应速度不佳甚至应用程序无响应错误。作为替代方案,将 LoaderManager 与 CursorLoader 一起使用。

2)CursorAdapter(上下文上下文,Cursor c,布尔自动重新查询)

允许控制自动重新查询的构造函数。建议您不要使用 this,而是使用 CursorAdapter(Context, Cursor, int)。

3)CursorAdapter(上下文上下文,光标c,int标志)

推荐的构造函数。

flags 用于确定适配器行为的标志;可以是 FLAG_AUTO_REQUERY 和 FLAG_REGISTER_CONTENT_OBSERVER 的任意组合。

FLAG_AUTO_REQUERY 此常量已弃用。不鼓励使用此选项,因为它会导致在应用程序的 UI 线程上执行游标查询,从而导致响应速度不佳甚至应用程序无响应错误。作为替代方案,将 LoaderManager 与 CursorLoader 一起使用。

FLAG_REGISTER_CONTENT_OBSERVER。将 CursorAdapter 与 CursorLoader 一起使用时,不需要此标志。

CursorAdapter(Context context, Cursor c, int flags) 是推荐的构造函数,但可能的标志是 2,一个已弃用,另一个在使用带有 CursorLoader 的 CursorAdapter 时不需要。如果我将 CursorAdapter 与 CursorLoader 一起使用,我必须使用此构造函数并将零作为标志传递?在这种情况下,构造函数是否与 #1 相同?

0 投票
1 回答
3521 浏览

android - Android db加载聊天应用程序的聊天

我正在创建一个聊天应用程序,我需要一些指导。我正在使用 sqlite 数据库来存储传入的聊天。我希望我的 Activity 在打开时从该特定聊天加载聊天历史记录,并在输入新聊天时继续刷新(我的主要问题是怎么做我打算这样做)。

我是否应该使用带有包含该对话聊天的查询的初始光标的 CursorAdapter 并将其设置为 ListView 的适配器?我已经尝试过了,但是当我插入数据库时​​数据不会刷新。

我知道我没有提供任何代码,但欢迎就最佳方法进行一般性讨论。谢谢!

让我还要提一下,我需要它才能在 android 2.3.3 (API 10) 及更高版本上工作(CursorLoader 和所有这些直到 API 11 才可用,我确实读过一点)。我可以做的另一件事是使用 ArrayAdapter 并将聊天直接添加到其中(如果活动是打开的),如果它不是,也将它插入到数据库中,然后在 onResume() 上,清除 ArrayAdapter 并查询所有 convo一次并阅读每个。这会是最优化的方式吗?

0 投票
1 回答
2505 浏览

android - LoaderManager 的作用域是什么?

使用 Loaders 创建 Android 应用程序时,每个 Activity 和 Fragment 都应该有自己的LoaderManager吗?还是应该只有一个LoaderManager应用程序拥有?最后,用于识别特定LoaderManagers 的“唯一 ID”在类之外是否可见?

具体来说,我在决定我的应用程序中的哪些类应该实现这些LoaderCallback<Cursor>方法时遇到了麻烦(即每个片段是否应该实现这些回调,或者我应该让一个片段实现回调并查询结果,并根据需要将它们发送到其他片段/活动) ?

提前感谢任何可以帮助我的人!我在网上找不到太多关于这个的信息。

0 投票
2 回答
10679 浏览

android - 你可以使用服务中的 LoaderManager 吗?

我有一个使用自定义加载器和光标设置的数据加载系统,该系统在活动和片段中运行良好,但服务中没有加载器管理器(我可以找到)。有谁知道为什么 LoaderManager 被排除在服务之外?如果没有,有没有办法解决这个问题?

0 投票
1 回答
1072 浏览

android - 如何使用 CursorLoader 一个一个地显示单个数据库记录

我正在尝试使ContentProvider每条记录都包含一个问题和相应的答案。以及显示每个问题和答案的 TextView 的 Activity 以及这些 TextView 下方的“下一步”按钮。单击下一步按钮时,我希望显示下一个问题和答案。

我正在尝试使用 CursorLoader 和 LoaderManager,因为 CursorLoader 将它们的数据保存在onStop()and之间onStart(),并且我正在尝试了解CursorLoadersand LoaderManagers

我发现的例子都使用了setListAdapter(),但我不希望我的活动看起来像一个列表。我试图通过使用 aSimpleCursorAdapter和使用bindView()我的main.xml布局来解决这个问题。不确定这是否可行。

如果我有一个普通的 Cursor,我会使用moveToNext(),但对于一个新的查询,LoaderManager我似乎必须这样做。restartLoader()我认为创建一个新查询比简单地使用游标转到下一条记录要花费更多时间。特别是因为我必须知道当前或下一个记录的位置。

所以我的问题是:我可以使用CursorLoaderandLoaderManager来遍历数据库,逐条记录,而无需对下一条记录进行新的查询吗?还是真的只适用于 ListViews CursorLoadersLoaderManagers

到目前为止,这是我的代码,我意识到它并不多,但我已经阅读并重新阅读了关于 Loaders 和 LoadManagers 的 Android 页面。

0 投票
3 回答
1947 浏览

android - 对于执行的每个数据库操作的类型,活动或片段是否必须具有单独的加载器?

似乎 Google 推荐的片段或活动与 sqlite 数据库交互的方式(使用 android 支持库)是通过扩展 AsyncTaskLoader 的加载器,其工作方式类似于 CursorLoader 为 ContentProviders 所做的方式。

单个活动或片段可以以多种方式与数据库交互,更新、删除和查询一个或多个表中的数据。loadInBackground()但是由于加载器只有一个地方来执行数据库操作(即loadInBackground()在加载器构造函数的args参数通过LoaderManager.initLoader()?

非常感谢。

0 投票
5 回答
24482 浏览

java - 可以让 Android 应用程序中的所有活动共享一个 SQLiteOpenHelper 实例吗?

是否可以将 SQLiteOpenHelper 的单个实例作为子类 Application 的成员,并让所有需要 SQLiteDatabase 实例的活动从一个助手那里获取它?

0 投票
1 回答
15080 浏览

java - 如何从 managedQuery 过渡到 LoaderManager/CursorLoader?

我正在开发一个针对 API 级别 8(2.2,Froyo)的 Android 应用程序。我正在使用 a ContentProvider,这很简单,我正在使用SimpleCursorAdapter它来填写我的列表视图,但我在SimpleCursorAdapter的文档中注意到无标志构造函数已被弃用,并带有以下注释:

此构造函数已弃用。不鼓励使用此选项,因为它会导致在应用程序的 UI 线程上执行游标查询,从而导致响应速度不佳甚至应用程序无响应错误。作为替代方案,将 LoaderManager 与 CursorLoader 一起使用。

由于我的目标是 API 级别 8,因此 aLoaderManager不绑定到Activity. 兼容性包中的FragmentActivity类执行此操作,但我没有使用 Fragments。

我的问题是:我应该如何LoaderManager/CursorLoader在针对 pre-11 API 级别的应用程序中使用?我是被迫过渡到 Fragments 还是应该恢复到已弃用的SimpleCursorAdapter构造函数(但使用 anAsyncTask来保持 UI 线程友好,这CursorLoader是应该做的)?