viewpager 适配器和 viewModel 之间的通信
communication between viewpager adapter and viewModel
我在viewpager
里面用了recyclerview
。现在我想在滚动回收站视图时更改 fragment
的视图。
我正在使用 mvvm
和 liveData
并且我想使用 viewModel
并将滚动数据发送到我的 viewModel
和 view
我 observe
viewModel
来自 viewPager
适配器的数据。
如何从 viewPager
适配器发送数据并在其 fragment
中使用它们?
val linearLayoutManager =
LinearLayoutManager(container.context, LinearLayoutManager.VERTICAL, false)
recCafeList = binding.recCafeList
recCafeList.layoutManager = linearLayoutManager
recCafeList.adapter = mAdapter
recCafeList.setOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val po = linearLayoutManager.findFirstVisibleItemPosition()
val po2 = linearLayoutManager.findFirstCompletelyVisibleItemPosition()
// I want to send @po and @po2 to viewModel and use them in fragment
Log.i("scrollListener", "$po //// $po2")
}
})
container.addView(binding.root)
return binding.root
您可以使用自定义侦听器。在片段内创建它并将其传输到寻呼机适配器。并且在任何时候你都可以调用 listeners 方法。就像那样 -
这是简单且很好的练习解决方案。
我在viewpager
里面用了recyclerview
。现在我想在滚动回收站视图时更改 fragment
的视图。
我正在使用 mvvm
和 liveData
并且我想使用 viewModel
并将滚动数据发送到我的 viewModel
和 view
我 observe
viewModel
来自 viewPager
适配器的数据。
如何从 viewPager
适配器发送数据并在其 fragment
中使用它们?
val linearLayoutManager =
LinearLayoutManager(container.context, LinearLayoutManager.VERTICAL, false)
recCafeList = binding.recCafeList
recCafeList.layoutManager = linearLayoutManager
recCafeList.adapter = mAdapter
recCafeList.setOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val po = linearLayoutManager.findFirstVisibleItemPosition()
val po2 = linearLayoutManager.findFirstCompletelyVisibleItemPosition()
// I want to send @po and @po2 to viewModel and use them in fragment
Log.i("scrollListener", "$po //// $po2")
}
})
container.addView(binding.root)
return binding.root
您可以使用自定义侦听器。在片段内创建它并将其传输到寻呼机适配器。并且在任何时候你都可以调用 listeners 方法。就像那样 -
这是简单且很好的练习解决方案。