【问题标题】:How do I connect an existing SQLite database to an ExpandableListView?如何将现有 SQLite 数据库连接到 ExpandableListView?
【发布时间】:2017-12-15 08:24:22
【问题描述】:

我一直在尝试准备自定义 Views 以在整整一周内显示 SQLite 数据库条目,但没有成功。

我已经尝试过默认列表和 Room Persistence Library 方法,甚至考虑过 JSON/GSON 替代方案,但同时使用基本文本字符串填充列表中的列表似乎是最简单的尝试。

基本上,现在我正在尝试一次混合两个样本:

我已经能够从我的数据库中添加数据并在某种程度上混合它们,但我不知道如何将数据库字段连接到列表的两个级别上的自定义 Views

到达MainActivity.java上的ExpandableListView后,我迷路了,我认为代码可能有一些重复的方法,可能dataAdapterlistAdapter的使用和HashMap<String, List<String>>()之间的混淆是可能是错的,但我现在不知道如何解决这些问题,所以,我请求一些帮助来处理这种情况。

【问题讨论】:

  • 使用android.widget.SimpleCursorTreeAdapter
  • 感谢您的提示!我一定没有意识到这一点。我想它会取代SimpleCursorAdapter,对吧?我现在要尝试这种方法,如果我卡在另一个点,我会更新问题代码。
  • 是的,当在 ExpandableListView 中使用时,它可以替代 SimpleCursorAdapter - 您需要做的就是实现 getChildrenCursor() 方法以使其工作
  • 是的,直到现在感觉都非常合适。我刚刚更改了SimpleCursorAdapter 并将前一列分为组列和子列,但我仍然对如何处理getChildrenCursror() 方法感到困惑(第一次处理SQLite 和ExpandableListView)。
  • getChildrenCursorCursor groupCursor 作为参数 - 使用它 - 如果你不知道它的内容,为了测试目的调用DatabaseUtils#dumpCurrentRow 方法在logcat 上查看它

标签: java android database sqlite expandablelistview


【解决方案1】:

感谢psikink 的支持,我已经能够找到解决此问题的方法。

实际上,在整整一周的时间里,我一直在寻找带有自定义适配器的 ListViewsExpandableListView 的简单示例的方法,但是一旦我能够抓住所提供建议的心态,那就是方式更容易处理这种情况。

转折点是了解SimpleCursorTreeAdapter 并更加关注SQLiteAssetHelper 方法。

代码准备好后,我会将其上传到我的GitHub profile,如果可能的话,我会尽量把它带到这里。

到目前为止,我猜这个piece of code 可能会有所帮助。

感谢 Stack Overflow 和 psikink 的帮助!

【解决方案2】:

对于那些试图从预填充的 SQLite 数据库中获取数据到 ExpandableListView 的用户,您可以简单地使用 this sample code 我在这里和那里提出这个问题后创建的。

您只需将 the database in this project 替换为您的并重构 the respective fields to match your database name, table and items 以使其符合您的需求。

基本上,使用SimpleCursorTreeAdapter,您将能够从数据库中选择两个级别的数据(组和子),SQLiteAssetHelper 将允许您从放在 assets 文件夹中的预先存在的文件中加载它( /app/src/main/assets/databases/)。

【讨论】:

    猜你喜欢
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多