在列表 Row android TV leanback 中动态添加更多卡片

Dynamically add more cards in a list Row android TV leanback

我开发 Android 电视应用程序已经有一段时间了,而且我在开发它的过程中已经取得了很大进展。我正在尝试开发类似爆米花时间的应用程序,但它适用于 Google nexus 电视盒。 我陷入的问题非常简单,但即使经过大量努力,我仍然无法找到解决方案。 我正在从我的数据库中获取 json 数据,其中包含所有电影的详细信息和链接,这非常有效。 Over all app view

现在那些在 Android 电视上使用过 you tube 应用程序的人一定已经注意到它是建立在 leanback 上的,当您在列表行中向下滚动时,更多的卡片会被添加到一行中,同样,该应用程序制作json 调用以根据我们正在滚动的类别获取更多数据。(这就是我想要做的)

现在这是不可能的,如果我请求大数据,需要很长时间才能从服务器获取所有内容,所以我设计了一种方法,通过它我可以在滚动时进行 json 调用,但我无法在运行时将它们显示在列表行中。

向演示者添加项目;

CardPresenter channelCardPresenter = new CardPresenter();
ArrayObjectAdapter channelRowAdapter = new ArrayObjectAdapter(channelCardPresenter);
channelRowAdapter.add(new Movie("Movie Title"));
HeaderItem header = new HeaderItem(0, "My Channels");
mRowsAdapter.add(new ListRow(header, channelRowAdapter));

当然,这可能只适用于您第一次创建 UI。未来的时代可能不会这样做。在我的应用程序 https://github.com/Fleker/CumulusTV/blob/master/app/src/main/java/com/felkertech/n/tv/LeanbackFragment.java 中,我创建了一个方法,每次我想对应用程序进行完全重绘时都会调用该方法:

public void refreshUI() {
    prepareBackgroundManager();
    setupUIElements();
    loadRows(); //Generate and populate all the rows
    setupEventListeners();
}

在过去的 7 或 8 个月里,我一直在使用 android TV Leanback 库。我开发了自己的演示器 class,通过它您可以在滚动时动态加载更多卡片,但使用 Leanback 库是不可能的,ListAdapter 更新单行,然后移动到下一个类别来更新它的卡片。这需要 运行 时间。

我已经使用以下答案创建了我自己的演示者 class。在滚动上实现无限加载的技巧是你必须创建两个 AysncTasks。

看看post 34

Lazy download images into gridView

这需要一点时间,但您会明白的。