【问题标题】:How to get the updated scroll position while scrolling RecyclerView滚动 RecyclerView 时如何获取更新的滚动位置
【发布时间】:2020-07-16 04:31:59
【问题描述】:

我有一个回收器视图,我正在通过 smoothScrollToPosition 函数滚动它。我想要一个监听器,它会在每次回收器视图滚动时触发,并在滚动时给我位置的值。 例如,如果我设置为 recyclerView.smoothScrollToPosition(15) 所以我希望在它滚动的每个位置上触发监听器,在这种情况下,它应该被触发并给出结果 0,1,2,3,4 最多 15 .

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    如果要获取当前位置,请在 onScrollListener() 中执行此操作

    private var currentVisibleItemRecyclerView = -1
        private var linearLayoutManager: LinearLayoutManager? = null
    

    然后在onCreate()声明布局管理器,将其设置为recyclerview并设置onScrollListener

    linearLayoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
            recyclerView.setLayoutManager(linearLayoutManager)
            recyclerView.addOnScrollListener(recyclerViewOnScrollListener)
    

    recyclerViewOnScrollListener 在哪里

       private val recyclerViewOnScrollListener: RecyclerView.OnScrollListener =
            object : RecyclerView.OnScrollListener() {
                override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
                    super.onScrollStateChanged(recyclerView, newState)
                
                }
    
                override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                    super.onScrolled(recyclerView, dx, dy)
                    val visibleItemCount: Int = linearLayoutManager!!.getChildCount()
                    val totalItemCount: Int = linearLayoutManager!!.getItemCount()
                    val firstVisibleItemPosition: Int =
                        linearLayoutManager!!.findFirstVisibleItemPosition()
                    currentVisibleItemRecyclerView = firstVisibleItemPosition + visibleItemCount
                    Log.d(
                        " Position",
                        " currentVisibleItemRecyclerView  " + currentVisibleItemRecyclerView.toString()
                    )
    
                }
            }
    

    【讨论】:

    • totalitemcount有什么用
    • 如无必要请勿使用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 2021-11-07
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多