在我的应用程序中,我有一个数据库,我通过自定义ContentProvider访问该数据库,其中包含以下列:
- id_widget = 我想显示值的小部件的 appWidgetId
- id_item = 另一个表中的值的 id,我将通过 SQL JOIN 查询获得
- name_item = 项目的名称,由我通过我创建的小部件配置活动分配。
该表的一个示例可能是这样的:
id_widget | id_item | name_item
----------+---------+----------
54 | 1 | avaible
54 | 2 | used
58 | 1 | left
58 | 3 | avaible2
58 | 5 | old
我的小部件应该只显示存储的第一个值,但是当按下时,我希望它们显示下一个值,依此类推,直到最后一个值,然后它们应该再次移动到第一个值。因此,例如,appWidgetId = 58 的小部件应显示“left”(以及我将使用 SQL JOIN QUERY 从另一个表中获取的另一个值。这些值通过 IntentService 从站点解析,并保存在另一个桌子)。触摸时,它应该显示值“avaible2”,然后再次触摸“old”,如果再次按下它应该移动到第一个值“left”。
我的第一个想法是查询数据库以获取所有值,并将它们存储在 AppWidgetProvider 内的一些集合中,以便在 onUpdate 方法中使用它们。这样我就不必每次触摸小部件时都查询数据库。直到我阅读了 AppWidgetProvider 上的文档并了解了它的实际工作原理以及我并不总是拥有相同的实例这一事实。
我一直在寻找另一种解决方案两天,但我仍然没有找到任何东西。我得到的唯一想法如下: - 跟踪我正在显示的表格的哪一行(可能通过在表格中添加另一列) - 每次触摸小部件时查询数据库的下一行。
是否足够高效?还有其他方法可以解决我的问题吗?
我为我的英语道歉,但由于这不是我的母语,这是我能做的最好的。提前致谢