【问题标题】:Android TV - How to implement endless RecyclerView like with Leanback HorizontalGridViewAndroid TV - 如何像 Leanback Horizo​​ntalGridView 一样实现无尽的 RecyclerView
【发布时间】:2017-10-28 03:47:13
【问题描述】:

我找不到在我的 Android TV 应用程序中实现分页的解决方案。我正在使用 Leanback 支持库 - HorizontalGridView 来列出项目。 HorizontalGridView 是从 RecyclerView 扩展而来,但它的布局管理器 (android.support.v17.leanback.widget.GridLayoutManager) 没有实现 findLastVisibleItemPosition() 方法。

如何为HorizontalGridView 实现分页。有什么方法可以监听HorizontalGridView 到达其内容末尾的事件(或者即使我们使用ListRowPresenter)?

【问题讨论】:

  • 我也有同样的问题!您找到解决方案了吗?

标签: android pagination android-tv television leanback


【解决方案1】:

您可以参考此Endless Scrolling with AdapterViews and RecyclerView 文档。基于此tutorial,要实现在用户向下滚动时获取更多数据并附加到列表末尾,请使用RecyclerView 中的addOnScrollListener() 并添加一个onLoadMore 方法,利用EndlessScrollViewScrollListener指南中的文档。

【讨论】:

  • 感谢您的评论,但本文档使用 LinearLayoutManager#findLastVisibleItemPosition() 方法,在我的案例中,该方法没有在 android.support.v17.leanback.widget.GridLayoutManager 中实现
【解决方案2】:

我也有同样的问题,我想我们可以使用OnChildViewHolderSelectedListener

recyclerView.addOnChildViewHolderSelectedListener(
    object : OnChildViewHolderSelectedListener() {
        override fun onChildViewHolderSelected(
            parent: RecyclerView,
            child: RecyclerView.ViewHolder,
            position: Int,
            subposition: Int
        ) {
            super.onChildViewHolderSelected(parent, child, position, subposition)
            if (position != RecyclerView.NO_POSITION) {
                parent.layoutManager?.let { layoutManager ->
                    Logger.d(
                        "Selected position $position of ${layoutManager.itemCount - 1}"
                    )
                    if (position > layoutManager.itemCount - 1 - THRESHOLD) {
                        Logger.d("Should load more items")
                    }
                }
            }
        }
    }
)

companion object {
    private const val THRESHOLD = 3
}

【讨论】:

    猜你喜欢
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2013-09-10
    • 2016-12-06
    • 2017-02-12
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多