【问题标题】:How to hide the ListRow in Android Tv Leanback Library如何在 Android Tv Leanback 库中隐藏 ListRow
【发布时间】:2021-05-25 12:37:41
【问题描述】:
我是 android Leanback 的新手,我正在关注 google 示例来学习 Leanback 以构建 android 电视应用程序。我有以下问题:
假设我要从后端获取 附加图片 中标记的行的数据。如果数据为空,如何从 BrowseSupportFragment 中隐藏 Row。其余的行应该是可见的。如何在运行时的特定行上使用 View.GONE。
免责声明:我不拥有上面使用的图像。它是https://github.com/android/tv-samples 页面的属性,我将其用于学习目的。
【问题讨论】:
标签:
android
android-tv
leanback
【解决方案1】:
BrowseSupportFragment 中的内容来自ObjectAdapter。处理您所描述的更改的最佳方法是更新适配器的基础数据并调用 notifyItemRangeRemoved。适配器还具有 notifyItemRangeChanged、notifyItemMoved 和 notifyItemRangeInserted,用于数据发生变化(例如,您仍然有相同的节目,但缩略图可能已更改)、数据移动(例如,第一行移动到列表),或者有新数据(例如,在底部添加了一个全新的行)。
使用 notify* 方法是处理更改的最佳方式,因为它们允许更有效的更新。在数据完全不同的情况下(或者您无法有意义地确定发生了什么变化),您可以为新的 ObjectAdapter 分配一组完全不同的数据。只知道这样做效率较低,并且可能导致 UI 出现卡顿/跳跃。