java - 在 RecyclerView.Adapter 内部滚动到位置

标签 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
              }    
         }
    }

PS:我在 swift/iOS 中用委托(delegate)协议(protocol)解决了这个问题, 我们在 android/Kotlin 中有等效的东西吗?

最佳答案

RecyclerView 所在的 Activity 类中创建此方法:

fun scrollToPosition(position: Int) {
    rv.scrollToPosition(position)
}

rv 替换为 RecyclerView 的 id

并在监听器中添加:

val myActivity: MainActivity = context as MainActivity
myActivity.scrollToPosition(x)

MainActivity 替换为 Activity 的名称,并将 x 替换为要滚动到的位置。

关于java - 在 RecyclerView.Adapter 内部滚动到位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52930678/

相关文章:

多次调用 Android LiveData observe

syntax - 如何在 Kotlin 中进行换行(续行)

java - 在不同的 jdk 版本中运行 spring boot 应用程序

java - Primefaces DataTable 内联编辑 - 不重新加载页面就无法更新模型

android - Android Studio 2.3.1

android - 未在 Play 商店中显示的安装总数

java - 为什么spring不使用ajax上传呢?

java - 主要通过不同的 void 方法更改人名

android - Google Play - 封闭/内部测试 : How to remove/disable App on Tester's Device?

hibernate - Spring Data - 不同包中的 hibernate.cfg.xml