道歉,如果我没有在这里提供足够的信息,我是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.class,Card.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变量的重新创建一样基本,可以调整以适应。
答案 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表实际包含正确的数据。它使调试变得更容易。