如何在viewpager中使用recyclerview smothScrollToPosition

问题描述 投票:0回答:1

我想在viewpager中使用recyclerview,当我想使用smothScrollToPosition滚动到某个位置时,我看不到当前页面的任何变化,但是当我滑动时,我看到变化已经已应用于下一页或上一页。我在此方法中的sliderAdapter调用scrollTo中定义了一个函数,在我单击smothScrollToPosition的过程中。当用户单击MainActivity]中的按钮时,调用方法[[scrollTo

MainActivity

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) } }
}

SlideAdapter

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) }
}

[IMAGE PAGE 1我按一下按钮,没有发现任何变化

IMAGE PAGE 2我滑动并看到此更改已应用到此页面上。

我需要帮助,请

^ _ ^

android android-recyclerview android-viewpager scrolltop
1个回答
0
投票
从方法scrollToPositionWithOffset的JavaDOC:
© www.soinside.com 2019 - 2024. All rights reserved.