1

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

我有一个VerticalGridFragmentAndroid TV 项目(使用leanback)的工作页面,它在列和行中加载专辑封面和详细信息。它大量借鉴了github 上的 googlesamples 示例

使用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()函数(来自同一个示例项目)加载它:

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());

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

我已经实现了一个SQLite成功启动的数据库,我可以在 Android Studio 的 Logs 中调用各种结果。我不知道从哪里开始插入数据库中的结果,因为Cards我可以加载到VerticalGridFragment,替换json文件的功能?

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

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

4

2 回答 2

1

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

易于使用并且比 SQLite 更快。它只需要几行代码就可以开始了。请检查一下。在爱上它之后,我最近成为了 Realm Evangelist(非官方)。只有挫折才会被使用基于流利界面的查询,并且只有当您的查询太复杂时才会发生。

于 2016-07-06T16:29:55.217 回答
1

你到底是什么意思However, I've had little luck in implementing a List of Card objects using iterating code.?如果你mAdapter.addAll(0, cards)用一张牌列表跟注,它应该能如你所愿。

您在从 SQLite 数据库中提取卡片列表时遇到困难吗?您可以依靠具有以下答案的此链接。我稍微修改了一下,大约是Card.class. 您还需要向该Card对象添加一个构造函数,因为他们假设您将使用@SerializedName它来初始化它,因此他们将它提供给您。下面的示例假设您添加了一个看起来像public Card(String title, String description).

List<Card> cardsList = new ArrayList<Card>();
database = openOrCreateDatabase("your_db", SQLiteDatabase.OPEN_READWRITE, null);
if(database!=null)
{
    c= database.rawQuery(QUERY, null);
    c.moveToFirst();
    while(c.isAfterLast()==false)
    {
        Card card = new Card(c.getString(c.getColumnIndex("title")),
                             c.getString(c.getColumnIndex("description")));
        cardsList.add(card);
        c.moveToNext();
    }

}
database.close();
c.close();

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

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

于 2016-07-06T19:00:46.560 回答