提问人:Simon Rex 提问时间:11/9/2023 更新时间:11/9/2023 访问量:18
检测嵌套的 RecyclerView 项目何时附加/分离于用户视图
Detecting when nested RecyclerView item is attached/detached from user view
问:
我正在尝试实现一个包含 RecyclerViews 列表的 RecyclerView。基本上,我有一个房间列表,每个房间都可以有一个设备列表。我已经实现了代码,该应用程序能够显示所有项目。但是,当我滚动浏览项目时,当房间滚动到/退出用户视图时,只有房间会触发 & 功能。但是,当每个房间内的设备滚动到用户视图中/退出时,它们不会触发这些功能。为什么当设备滚动到/退出用户视图时,设备嵌套的 RecyclerView 不会触发 & 函数,我该如何解决?onViewAttachedToWindow
onViewDetachedFromWindow
onViewAttachedToWindow
onViewDetachedFromWindow
以下是在 Kotlin 中实现的相关代码片段。
- 主片段
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
recyclerView = binding.recyclerView;
recyclerView.layoutManager = LinearLayoutManager(context);
val dataset = ...
val adapter = RoomRecyclerViewAdapter(
requireContext(),
dataset
)
recyclerView.adapter = adapter
viewModel.roomsList.observe(requireActivity()) {
dataset.clear()
dataset.addAll(it)
recyclerView.post { adapter.notifyDataSetChanged() }
}
}
- RoomRecyclerView适配器
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val layoutManager = LinearLayoutManager(context)
deviceRecyclerView.layoutManager = layoutManager
// devices that are children of this room
val devicesDataset = ...
val devicesAdapter = DeviceRecyclerViewAdapter(
context,
devicesDataset,
)
deviceRecyclerView.adapter = devicesAdapter
}
override fun onViewAttachedToWindow(holder: ViewHolder) {
super.onViewAttachedToWindow(holder)
Timber.i("room onViewAttachedToWindow")
}
override fun onViewDetachedFromWindow(holder: ViewHolder) {
super.onViewDetachedFromWindow(holder)
Timber.i("room onViewDetachedFromWindow")
}
- DeviceRecyclerView适配器
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
...
}
override fun onViewAttachedToWindow(holder: ViewHolder) {
super.onViewAttachedToWindow(holder)
Timber.i("device onViewAttachedToWindow")
}
override fun onViewDetachedFromWindow(holder: ViewHolder) {
super.onViewDetachedFromWindow(holder)
Timber.i("device onViewDetachedFromWindow")
}
答: 暂无答案
评论