在 RecyclerView.Adapter 内滚动到位置

A. *_*ini 2 java android kotlin android-recyclerview

在 RecyclerView.Adapter 类中注册点击监听器后,我必须滚动到位置 X!

    class MyAdapter(context: Context, mRV: RecyclerView, mLayoutm: LinearLayoutManager) {
    ...

         override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
              holder.itemView.XY_button.setOnClickListener { // Button inside a cell  

                    mRV.layoutManager.scrollToPosition(x)  // Not work
                    mRV.scrollToPosition(x)      // Not work
                    mLayoutm.scrollToPosition(x) // Not work
                    (context as MyRVClass).mRV.mLayoutm.scrollToPosition(x) // Not work
                    (context as MyRVClass).mRV.scrollToPosition(x) // Not work
                    // it does't work with smoothScrollToPosition() too
              }    
         }
    }
Run Code Online (Sandbox Code Playgroud)

PS:我在 swift/iOS 中使用委托协议解决了这个问题,我们在 android/Kotlin 中是否有等效的东西?

for*_*pas 6

在您的活动类中创建此方法,其中RecyclerView

fun scrollToPosition(position: Int) {
    rv.scrollToPosition(position)
}
Run Code Online (Sandbox Code Playgroud)

替换rvRecyclerView的 id

并在监听器中添加以下内容:

val myActivity: MainActivity = context as MainActivity
myActivity.scrollToPosition(x)
Run Code Online (Sandbox Code Playgroud)

替换MainActivity为活动的名称和x要滚动到的位置。