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

时间:2015-11-21 10:46:58

标签: android json android-tv leanback

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

现在那些在Android TV上使用过你的电子管应用程序的人一定注意到它是在leanback上构建的,当你在listrow中向下滚动时,更多的卡被添加到一行中,同样应用程序让json调用以获取更多根据我们滚动的类别的数据。(这就是我想要做的事情)

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

2 个答案:

答案 0 :(得分:1)

将项目添加到演示者;

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

答案 1 :(得分:0)

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

我使用下面的答案来创建我自己的演示者类。在滚动上实现无限加载时的技巧是你必须创建两个AysncTasks。

看一下第34页

Lazy download images into gridView

它会花一点时间,但你会得到这个想法。