用项目中的数据库检索替换json检索

时间:2016-07-06 11:48:50

标签: android json sqlite android-tv leanback

道歉,如果我没有在这里提供足够的信息,我是android / java的新手,并且通过组合各种示例项目的元素来学习。

我有一个适用于Android TV项目的工作IoGetPagingIoPriority页面(使用leanback),可以在列和行中加载专辑封面和详细信息。它大量借鉴googlesamples example on github

使用格式为的测试VerticalGridFragment文件:

music_database_proto.json

然后我可以使用{ "cards": [ { "type": "GRID_SQUARE", "title": "Around the World in a Day", "artist": "Prince and the Revolution", "description": "Prince and the Revolution", "groupType": 0, "tagID": 0, "localImageResource": "food_01" } } 函数(来自同一个示例项目)使用:

加载它
createRows()

在示例中使用了CardRow.classCard.class及其各种支持类的示例项目类。

我已经实现了一个成功启动的PresenterSelector cardPresenterSelector = new CardPresenterSelector(getActivity()); mAdapter = new ArrayObjectAdapter(cardPresenterSelector); String json = Utils.inputStreamToString(getResources(). openRawResource(R.raw.music_database_proto)); CardRow row = new Gson().fromJson(json, CardRow.class); mAdapter.addAll(0, row.getCards()); 数据库,我可以在Android Studio的日志中调用各种结果。我不知道从哪里开始将数据库中的结果作为SQLite插入我可以加载到Cards,替换VerticalGridFragment文件的功能?

我认为这就像从数据库结果创建json并使用List<Card>将其添加到mAdapter一样简单。但是,我使用迭代代码实现mAdapter.addAll List个对象的运气不佳。绝望地,我认为我应该将数据库结果转换为Card字符串,并将它们反馈到我上面显示的现有代码中?

任何帮助表示赞赏。数据库与json变量的重新创建一样基本,可以调整以适应。

2 个答案:

答案 0 :(得分:1)

Realm for android将是您的最佳选择。

易于使用比SQLite 更快。  它只需几行代码即可开始。请检查一下。我爱上它后,最近被证实是Realm Evangelist(不是正式的)。只有使用流畅的基于接口的查询才会遇到挫折,只有当你的查询过于复杂时才会发生这种情况。

答案 1 :(得分:1)

case class到底是什么意思?如果您使用卡片列表调用@Inject,则可以按照您的意愿使用。

您是否难以从SQLite数据库中提取卡片列表?您可以依赖具有以下答案的this link。我已将其略微修改为大约However, I've had little luck in implementing a List of Card objects using iterating code.。您还需要向mAdapter.addAll(0, cards)对象添加构造函数,因为假设您使用Card.class初始化它,它们会将它提供给您。以下示例假设您添加了一个类似Card的构造函数。

@SerializedName

该示例实际上只是一个起点,但它们鼓励您自定义示例中的任何类以更好地满足您的需求。

我也喜欢你尝试学习SQLite,因为它是一个很好熟悉的Android(以及一般的移动开发)。您还可以使用Stetho by Facebook之类的库来确保您的SQLite表实际包含正确的数据。它使调试变得更容易。