【发布时间】:2019-10-21 12:50:18
【问题描述】:
我在 viewpager 中使用 recyclerview,当我想使用 smothScrollToPosition 滚动到某个位置时,我发现当前页面没有任何变化但是当我滑动时,我看到更改已应用于下一页或上一页。我在 sliderAdapter 调用 scrollTo 中定义了一个函数,在这个方法中我调用 smothScrollToPosition。方法 scrollTo 是调用当用户点击 MainActivity
中的按钮时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)
}
}
} 幻灯片适配器
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