android - RecyclerView smothScrollToPosition 在 ViewPager 中不起作用
问题描述
我在 ViewPager 中使用 RecyclerView ,当我想滚动当前页面的第 30 个位置时,它适用于另一个页面。我在滑块适配器中定义了一个方法调用scrollTo在这个方法中我调用了 smoothScrollToPosition。方法scrollTo被调用时我点击一个按钮。我需要帮助。
主要活动
val pager = findViewById<ViewPager>(R.id.view_pager)
val adapter = SlideAdapter(this)
pager.adapter = adapter
findViewById<Button>(R.id.button).setOnClickListener {
adapter.scrollTo(30)
}
滑块适配器
lateinit var recyclerView: RecyclerView
fun scrollTo(position: Int) {
recyclerView.smoothScrollToPosition(position)
}
override fun isViewFromObject(view: View, `object`: Any): Boolean = view == `object` as RelativeLayout
override fun getCount() = 5
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val view = LayoutInflater.from(context)
.inflate(R.layout.slide, container, false) as RelativeLayout
val list = mutableListOf<String>()
for (i in 0..50)
list.add("Element $i")
val viewAdapter = Adapter(context, list)
val viewManager = LinearLayoutManager(context)
recyclerView = view.findViewById(R.id.recyclerView)
recyclerView.apply {
setHasFixedSize(true)
layoutManager = viewManager
adapter = viewAdapter
}
container.addView(view)
return view
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
container.removeView(`object` as RelativeLayout)
}
解决方案
您可以
linearLayoutManager.scrollToPositionWithOffset(30,0)
在您的MainActivity
. 使用linearLayoutManager
您要设置的recylerview
。
编辑 它的发生是因为 viewpager 一次加载多个项目。您需要在 pageradadapter 中使用 setprimary 方法
override fun setPrimaryItem(container: ViewGroup, position: Int, object: Any) {
super.setPrimaryItem(container, position, object)
var mCurrentView = DataBindingUtil.getBinding<DcMediaPagerItemBinding>(object as View)}
并使用此 mCurrentView 来获取您当前的 recylerview 活动项目
推荐阅读
- java - libGDX 出错,窗口立即打开和关闭
- javascript - 如何使 `window.scrollTo` 更精确?
- javascript - 事件触发时本地 DOM 元素上的 Polymer 2 TypeError
- android - AdMob 插页式广告在加载后不显示
- perl - 缺少哈希的默认值
- c# - 使用计算着色器将纹理转换为浮点值的一维数组
- android - 将标记的 ArrayList 添加到谷歌地图
- charts - 使用 SPSS 不显示图表图例
- google-chrome-app - 我的 javascript 无法在我的 chrome 应用程序上运行
- c++ - 朋友、模板、命名空间