如何使用leanback库在android TV中有效地实现大型单个列表

副总裁

我想使用leanback库在Android TV中构建一个包含大量UI元素(1000个)的列表。我目前正在扩展VerticalGridFragment并使用ArrayObjectAdapter。我想从绑定(比如说)100个元素开始,然后在用户到达滚动到列表末尾时绑定下100个元素。我看不到实现此行为的方法。

VerticalGridFragment提供了两个侦听器:OnItemViewClickedListener和OnItemViewSelectedListener。在查询下一个100个元素之前,不断聆听所选的每个项目似乎非常昂贵。

有任何想法吗?谢谢。

凯尔·文恩(Kyle Venn)

我可以想到两种方法。首先是按照您的建议检查选定的元素。这类似于我对此SO帖子的回答侦听器本身并不昂贵,只要您在侦听器中进行轻量级检查,它对性能的影响就可以忽略不计。这种方法的缺点是,如果您使用触摸屏设备(正在运行倾斜回显),则您将无法选择滚动位置,因为仅滚动不会触发项目选择。

选项1:

final int FETCH_NEXT_THRESHOLD = 5; // or NUM_COLUMNS * 2 if it's a grid
final ListRow listRow = (ListRow) row;
final ArrayObjectAdapter currentRowAdapter = listRow.getAdapter();
int selectedIndex = currentRowAdapter.indexOf(item);
if (selectedIndex != -1 && (currentRowAdapter.size() - index < FETCH_NEXT_THRESHOLD) {
    // One of the last FETCH_NEXT_THRESHOLD items was selected.
    // Trigger next page fetch now.
}

选项2:

另一种方法依赖于所VerticalGridView支持的事实RecyclerView您可以使用类似于此类的东西这将检查子元素的数量以及当前在查看哪个元素。这对性能有更大的影响,因为它受到的打击更频繁(但影响仍然很小)。您可以通过添加一个实现这个ScrollListenerVerticalGridFragmentVerticalGridView,你会最有可能在做Presenter水平。

结论:

我建议选择1,因为它更容易实现,并且可以容纳大多数用例。但是,如果您担心触摸屏设备运行向后倾斜,则可能需要采用与选项2类似的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用leanback库在Android TV中有效地实现大型单个列表

来自分类Dev

如何在线程安全的C库中有效地实现句柄

来自分类Dev

如何在 Matlab 中有效地计算单个有限差分?

来自分类Dev

如何在Matlab中有效地实现序数参数的优化

来自分类Dev

如何在R中有效地实现合并

来自分类Dev

如何在内核中有效地实现异步I / O

来自分类Dev

如何在列表中的python列表中有效地共现

来自分类Dev

如何有效地在python中通过大型列表创建迭代?

来自分类Dev

如何在python中更有效地搜索大型列表?

来自分类Dev

如何在R中有效地附加列表的所有元素

来自分类Dev

如何在Prolog中有效地附加3个列表?

来自分类Dev

如何在python中有效地对列表进行分类

来自分类Dev

如何在iOS中有效地创建列表

来自分类Dev

如何在大代码目录中有效地搜索字符串列表

来自分类Dev

如何在Prolog中有效地附加3个列表?

来自分类Dev

如何有效地实现这种效果?

来自分类Dev

如何有效地实现这种效果?

来自分类Dev

如何有效地实现这些JavaScript函数

来自分类Dev

如何在Bootstrap 3中有效地实现BS2 .spanX语义?

来自分类Dev

如何在Python网络机器人中有效地实现多线程/多处理?

来自分类Dev

如何最有效地从大型 SQLite 数据库中提取数据?

来自分类Dev

如何有效地搜索列表中的项目?

来自分类Dev

如何有效地搜索列表中的项目?

来自分类Dev

清漆:如何从给定列表中有效地批量映射永久性302重定向

来自分类Dev

有效地使用sqlalchemy插入字典列表

来自分类Dev

如何在Python中有效地将参数解译到数据库

来自分类Dev

使用Gensim从Fasttext库中有效地加载预训练单词嵌入的内存

来自分类Dev

如何在使用FILESTREAM的应用程序中有效地使用CHECKPOINT

来自分类Dev

如何有效地训练具有大型图像数据集的 CNN 模型

Related 相关文章

  1. 1

    如何使用leanback库在Android TV中有效地实现大型单个列表

  2. 2

    如何在线程安全的C库中有效地实现句柄

  3. 3

    如何在 Matlab 中有效地计算单个有限差分?

  4. 4

    如何在Matlab中有效地实现序数参数的优化

  5. 5

    如何在R中有效地实现合并

  6. 6

    如何在内核中有效地实现异步I / O

  7. 7

    如何在列表中的python列表中有效地共现

  8. 8

    如何有效地在python中通过大型列表创建迭代?

  9. 9

    如何在python中更有效地搜索大型列表?

  10. 10

    如何在R中有效地附加列表的所有元素

  11. 11

    如何在Prolog中有效地附加3个列表?

  12. 12

    如何在python中有效地对列表进行分类

  13. 13

    如何在iOS中有效地创建列表

  14. 14

    如何在大代码目录中有效地搜索字符串列表

  15. 15

    如何在Prolog中有效地附加3个列表?

  16. 16

    如何有效地实现这种效果?

  17. 17

    如何有效地实现这种效果?

  18. 18

    如何有效地实现这些JavaScript函数

  19. 19

    如何在Bootstrap 3中有效地实现BS2 .spanX语义?

  20. 20

    如何在Python网络机器人中有效地实现多线程/多处理?

  21. 21

    如何最有效地从大型 SQLite 数据库中提取数据?

  22. 22

    如何有效地搜索列表中的项目?

  23. 23

    如何有效地搜索列表中的项目?

  24. 24

    清漆:如何从给定列表中有效地批量映射永久性302重定向

  25. 25

    有效地使用sqlalchemy插入字典列表

  26. 26

    如何在Python中有效地将参数解译到数据库

  27. 27

    使用Gensim从Fasttext库中有效地加载预训练单词嵌入的内存

  28. 28

    如何在使用FILESTREAM的应用程序中有效地使用CHECKPOINT

  29. 29

    如何有效地训练具有大型图像数据集的 CNN 模型

热门标签

归档