如何在查看页中使用 recyclerview smothScrollToPosition



我在查看页面中使用回收器视图,当我想使用smothScrollToPosition滚动到某个位置时,我看不到当前页面中的任何变化,但是当我滑动时,我看到更改已应用于下一页或上一页。我在滑块适配器调用scrollTo中定义了一个函数,在此方法中,我调用smothScrollToPosition方法scrollTo是在用户单击主活动中的按钮时调用

主活动

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val pager = findViewById<ViewPager>(R.id.view_pager)
val adapter = SlideAdapter(this)
pager.adapter = adapter
findViewById<Button>(R.id.button).setOnClickListener {
adapter.scrollTo(30)
}
}

}滑动适配器

class SlideAdapter(val context: Context) : PagerAdapter()  {
lateinit var recyclerView: RecyclerView
lateinit var viewManager : LinearLayoutManager
fun scrollTo(position: Int) {
viewManager.scrollToPositionWithOffset(position, 0)
}
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)
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)
}

}

图像页 1 我单击按钮,没有看到任何变化

图像第 2 页 我滑动并看到更改已应用于此页面。

我需要帮助,请^_^

来自 JavaDOC 的方法 scrollToPositionWithOffset:

请注意,滚动位置更改在下一次布局调用之前不会反映。

如果您只是想使位置可见,请使用 {@link #scrollToPosition(int(}。

可能这是问题所在?

最新更新