问题标签 [android-cursoradapter]

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 投票
2 回答
1854 浏览

android - 如何根据 Cursor 数据在自定义 CursorAdapter 中使用不同的行布局?

背景:我正在尝试在我的应用程序中实现一个消息传递系统,并且我正在编写一个自定义CursorAdapterListView在聊天窗口中显示消息。我想为传入和传出消息使用不同的行布局(保存在游标中的 SQLite 行中的信息)。每一行都有相同的元素,它们的 ID 相同,但它们的排列方式不同。

问题:目前,我已经覆盖了newView()bindView(). 当第ListView一次填充时,它会View完美地创建所有 s,检查每一行以查看它是传入还是传出,并扩展正确的 XML 文件。但是,当我滚动或将新消息添加到窗口时,适配器会View为错误的行回收 s。我会覆盖getView(),但它没有Cursor作为参数传递,所以我无法知道该行应该是传入还是传出。

我不是在寻找代码,而是在寻找优雅实现的一些建议。提前致谢!

0 投票
1 回答
1559 浏览

android - Android ExpandableListView SimpleCursorTreeAdapter 启动为空会崩溃

我正在编写一个 Android 应用程序(针对 Android 版本 2.1 以上)。我正在使用ExpandableListView带有SimpleCursorTreeAdapter. 我发现它会按照以下顺序崩溃:

  1. ExpandableListView启动时为空(即数据库中没有相应的记录)。
  2. 添加记录。
  3. 使用 回到屏幕ExpandableListView。现在,显示组。
  4. 点击群组展开,活动将被强制关闭。

经过几天的互联网搜索,然后痛苦地追踪我的应用程序的源代码和Android的平台源代码,
似乎问题是:当Android平台启动 ItheSimpleCursorTreeAdapter时,
它​​会在实例化过程中将子字段列表存储在 private 成员中mChildFrom一次(奇怪的是)条件是如果至少有一组。如果没有记录(因此没有组),则不存储子字段列表。当随后添加记录以及将组扩展到显示的子行时,ExpandableListView将崩溃,因为私有成员mChildFrom为空。

所以,我现在的解决方法是:只实例化SimpleCursorTreeAdapter数据库中是否有相关记录。如果没有,请在OnResume().

如果有人对崩溃有更好的理由或有更好的解决方案,这将对我(或其他有同样问题的可怜人)有所帮助。(我倾向于认为这是 Android 平台中的一个错误。)

0 投票
2 回答
570 浏览

android - 加速数据库写入

我有一个 ListActivity 使用 CursorAdapter 来显示一些数据。此数据是 Web 服务调用的结果。

我从 Web 服务调用中获取响应,使用 org.json.* 库对其进行解析,然后将结果写入应用程序的 SQLite3 数据库。然后重新查询 ListActivity 的光标,数据显示在列表中。

我的问题是数据库写入速度过慢。我唯一能想到的就是不使用 CursorAdapter 并将这些数据保存在内存中。我希望有人有另一个建议来加快速度。也许是某种批量插入?

应该注意的是,我正在使用 ContentProvider 进行插入。所以我调用 getContentResolver().insert(...)。

以下是通过 LAN 检索 56 行数据并显示它们的测试中的一些时间:

响应时间:178ms

解析json的时间:16ms

向数据库写入 56 行的时间:5714ms

对于这么多数据,我最终希望数据库写入的时间低于 1000 毫秒。

0 投票
1 回答
1987 浏览

android - CursorAdapter 无法实例化!

我有一个DataBaseHelper,它有一个fetchData()方法返回一个Cursor包含整个表行的 drom 文件夹中的 .sqlite 文件。

我写了这个:

我在try 块的末尾添加了这两行。我这样做是为了将CursorAdapter ca附加到ListView lv

但是,我在CursorAdapter实例化行收到一条错误消息:

无法实例化类型 CursorAdapter

这里有什么问题?我是否使用错误的适配器从数据库中获取?

0 投票
2 回答
504 浏览

android - ListView 的活动不处理返回键事件

我使用ActivityGroup来实现tab界面。在一个选项卡中,我有一个带有 ListView 的活动 A,当我单击 sur un 项目时,选项卡中会打开另一个页面(活动 B),然后当我想返回第一页(活动 A)时,有时它会关闭我的申请。我不明白为什么..

我将 MyCursorAdapter(SimpleCursorAdapter 的子类)用于 Activity A 中的 ListView。

每次我按后退键时都不会出现问题。只是偶尔,偶尔。特别是当我在返回第一页之前等待片刻(前 2 分钟)。

通过调试,我看到当我不回到第一页时,没有调用“onBackPress”或“onKeyDown”。

有任何想法吗?谢谢!

0 投票
1 回答
186 浏览

android - 回收时如何不根据位置确定ListView的布局

我扩展了 CursorAdapter 并将其与 ListView 相关联。我有两种不同的行布局,并实现了getViewTypeCount、和。数据来自一个 SQL 表,其中每一行都有一个布局列,该列指示该项目应具有的布局类型。getItemViewTypenewViewbindView

我的getViewTypeCount样子是这样的:

但这似乎搞砸了视图的回收。

如何实现?或者这是一种不好的实现方式?

0 投票
1 回答
1642 浏览

android - 初始化 CursorAdapter 后更新 ListView

我有一个包含标签片段的标签活动。其中一个选项卡显示来自 SQLite 数据库表的数据列表(如果表为空,则显示不同的片段)。最初创建选项卡时,选项卡活动会检查表是否包含任何数据。如果是,那么它会初始化列表 Fragment,但不会设置 CursorAdapter。CursorAdapter 由 AsyncTask 初始化,它将 SQLite 数据库与中央数据库同步,然后创建 Cursors 和 CursorAdapter。列表 Fragment 在等待 AsyncTask 创建 CursorAdapter 时显示 ProgressDialog。当 CurserAdapter 被初始化时,ProgressDialog 被关闭,但 ListView 仍保留在其“空列表”视图中,尽管调用了 notifyDataSetChanged()。如果我切换标签然后回来,ListView 正确显示数据。初始化 CursorAdapter 后,如何更新 ListView?

相关代码:

标签:

同步任务:

好友列表:

0 投票
1 回答
275 浏览

android - 有没有办法使用光标适配器显示其项目由 sqlite 支持的列表

我有一个我希望映射到 ListView 的项目列表,但这些项目的各个字段可能会或可能不会由 sqlite 支持。如果该项目不受 sqlite 支持,我只想显示一些默认值和 id。有没有办法使用 SimpleCursorAdapter 来做到这一点,还是我应该去别处看看?

0 投票
3 回答
2810 浏览

android - 使用自定义适配器绕过 ListView 的 onListItemClick()

我意识到关于这个问题有很多问题,但是将 row.xml 中的每个视图设置为 focusable="false" 和 focusableInTouchMode="false" 的解决方案不起作用,从 ListActivity 和设置中获取 ListView 也不起作用setItemsCanFocus(假)。

奇怪的是,当注册上下文菜单时,长按有效。常规水龙头呢?没有。我尝试设置像 OnItemClickListener 这样的监听器无济于事。

我在某处读到我可以通过在我的适配器中覆盖 getView() 来解决这个问题?我不太确定它是如何工作的。注意,我不想知道用户点击了哪个视图;我只关心单击列表行以启动 onListItemClick() 中的相应代码。

也许我的 row.xml 中有些东西全错了?或者它是否受到我设置 ListView 适配器的方式的影响(放置在 onResume() 而不是 onCreate() 以更新信息)?

0 投票
4 回答
17201 浏览

android - 在 CursorAdapter 中使用带有 ORMLite 的 Android 游标

有什么方法可以获取 Cursor 进行查询,我正在使用 ORMLite Dao 对象进行处理?