问题标签 [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.
android - 如何根据 Cursor 数据在自定义 CursorAdapter 中使用不同的行布局?
背景:我正在尝试在我的应用程序中实现一个消息传递系统,并且我正在编写一个自定义CursorAdapter
以ListView
在聊天窗口中显示消息。我想为传入和传出消息使用不同的行布局(保存在游标中的 SQLite 行中的信息)。每一行都有相同的元素,它们的 ID 相同,但它们的排列方式不同。
问题:目前,我已经覆盖了newView()
和bindView()
. 当第ListView
一次填充时,它会View
完美地创建所有 s,检查每一行以查看它是传入还是传出,并扩展正确的 XML 文件。但是,当我滚动或将新消息添加到窗口时,适配器会View
为错误的行回收 s。我会覆盖getView()
,但它没有Cursor
作为参数传递,所以我无法知道该行应该是传入还是传出。
我不是在寻找代码,而是在寻找优雅实现的一些建议。提前致谢!
android - Android ExpandableListView SimpleCursorTreeAdapter 启动为空会崩溃
我正在编写一个 Android 应用程序(针对 Android 版本 2.1 以上)。我正在使用ExpandableListView
带有SimpleCursorTreeAdapter
. 我发现它会按照以下顺序崩溃:
ExpandableListView
启动时为空(即数据库中没有相应的记录)。- 添加记录。
- 使用 回到屏幕
ExpandableListView
。现在,显示组。 - 点击群组展开,活动将被强制关闭。
经过几天的互联网搜索,然后痛苦地追踪我的应用程序的源代码和Android的平台源代码,
似乎问题是:当Android平台启动 ItheSimpleCursorTreeAdapter
时,
它会在实例化过程中将子字段列表存储在 private 成员中mChildFrom
一次(奇怪的是)条件是如果至少有一组。如果没有记录(因此没有组),则不存储子字段列表。当随后添加记录以及将组扩展到显示的子行时,ExpandableListView
将崩溃,因为私有成员mChildFrom
为空。
所以,我现在的解决方法是:只实例化SimpleCursorTreeAdapter
数据库中是否有相关记录。如果没有,请在OnResume()
.
如果有人对崩溃有更好的理由或有更好的解决方案,这将对我(或其他有同样问题的可怜人)有所帮助。(我倾向于认为这是 Android 平台中的一个错误。)
android - 加速数据库写入
我有一个 ListActivity 使用 CursorAdapter 来显示一些数据。此数据是 Web 服务调用的结果。
我从 Web 服务调用中获取响应,使用 org.json.* 库对其进行解析,然后将结果写入应用程序的 SQLite3 数据库。然后重新查询 ListActivity 的光标,数据显示在列表中。
我的问题是数据库写入速度过慢。我唯一能想到的就是不使用 CursorAdapter 并将这些数据保存在内存中。我希望有人有另一个建议来加快速度。也许是某种批量插入?
应该注意的是,我正在使用 ContentProvider 进行插入。所以我调用 getContentResolver().insert(...)。
以下是通过 LAN 检索 56 行数据并显示它们的测试中的一些时间:
响应时间:178ms
解析json的时间:16ms
向数据库写入 56 行的时间:5714ms
对于这么多数据,我最终希望数据库写入的时间低于 1000 毫秒。
android - CursorAdapter 无法实例化!
我有一个DataBaseHelper,它有一个fetchData()
方法返回一个Cursor
包含整个表行的 drom 文件夹中的 .sqlite 文件。
我写了这个:
我在try 块的末尾添加了这两行。我这样做是为了将CursorAdapter ca
附加到ListView lv
:
但是,我在CursorAdapter实例化行收到一条错误消息:
无法实例化类型 CursorAdapter
这里有什么问题?我是否使用错误的适配器从数据库中获取?
android - ListView 的活动不处理返回键事件
我使用ActivityGroup来实现tab界面。在一个选项卡中,我有一个带有 ListView 的活动 A,当我单击 sur un 项目时,选项卡中会打开另一个页面(活动 B),然后当我想返回第一页(活动 A)时,有时它会关闭我的申请。我不明白为什么..
我将 MyCursorAdapter(SimpleCursorAdapter 的子类)用于 Activity A 中的 ListView。
每次我按后退键时都不会出现问题。只是偶尔,偶尔。特别是当我在返回第一页之前等待片刻(前 2 分钟)。
通过调试,我看到当我不回到第一页时,没有调用“onBackPress”或“onKeyDown”。
有任何想法吗?谢谢!
android - 回收时如何不根据位置确定ListView的布局
我扩展了 CursorAdapter 并将其与 ListView 相关联。我有两种不同的行布局,并实现了getViewTypeCount
、和。数据来自一个 SQL 表,其中每一行都有一个布局列,该列指示该项目应具有的布局类型。getItemViewType
newView
bindView
我的getViewTypeCount
样子是这样的:
但这似乎搞砸了视图的回收。
如何实现?或者这是一种不好的实现方式?
android - 初始化 CursorAdapter 后更新 ListView
我有一个包含标签片段的标签活动。其中一个选项卡显示来自 SQLite 数据库表的数据列表(如果表为空,则显示不同的片段)。最初创建选项卡时,选项卡活动会检查表是否包含任何数据。如果是,那么它会初始化列表 Fragment,但不会设置 CursorAdapter。CursorAdapter 由 AsyncTask 初始化,它将 SQLite 数据库与中央数据库同步,然后创建 Cursors 和 CursorAdapter。列表 Fragment 在等待 AsyncTask 创建 CursorAdapter 时显示 ProgressDialog。当 CurserAdapter 被初始化时,ProgressDialog 被关闭,但 ListView 仍保留在其“空列表”视图中,尽管调用了 notifyDataSetChanged()。如果我切换标签然后回来,ListView 正确显示数据。初始化 CursorAdapter 后,如何更新 ListView?
相关代码:
标签:
同步任务:
好友列表:
android - 有没有办法使用光标适配器显示其项目由 sqlite 支持的列表
我有一个我希望映射到 ListView 的项目列表,但这些项目的各个字段可能会或可能不会由 sqlite 支持。如果该项目不受 sqlite 支持,我只想显示一些默认值和 id。有没有办法使用 SimpleCursorAdapter 来做到这一点,还是我应该去别处看看?
android - 使用自定义适配器绕过 ListView 的 onListItemClick()
我意识到关于这个问题有很多问题,但是将 row.xml 中的每个视图设置为 focusable="false" 和 focusableInTouchMode="false" 的解决方案不起作用,从 ListActivity 和设置中获取 ListView 也不起作用setItemsCanFocus(假)。
奇怪的是,当注册上下文菜单时,长按有效。常规水龙头呢?没有。我尝试设置像 OnItemClickListener 这样的监听器无济于事。
我在某处读到我可以通过在我的适配器中覆盖 getView() 来解决这个问题?我不太确定它是如何工作的。注意,我不想知道用户点击了哪个视图;我只关心单击列表行以启动 onListItemClick() 中的相应代码。
也许我的 row.xml 中有些东西全错了?或者它是否受到我设置 ListView 适配器的方式的影响(放置在 onResume() 而不是 onCreate() 以更新信息)?
android - 在 CursorAdapter 中使用带有 ORMLite 的 Android 游标
有什么方法可以获取 Cursor 进行查询,我正在使用 ORMLite Dao 对象进行处理?