我想用我的变量flow
来保存integer
并保留他。然后,recyclerview中的每个视图持有人观察流,并在点击时做出反应。例如:
我有cardView
当我点击它时,我使用方法
statusButtons.toggleVisibility(!statusButtons.isVisible)
. .然后我的元素像滑动模式一样暴露,如果我点击另一个元素,前一个元素应该(滑动回来),或者在我的情况下只是toggleVisisbility
到isNotVisible
。
现在,如果我每次点击我的元素,我只触发这一个元素,所以我不能隐藏其他元素,并对其进行操作。
现在我是这样开始的:
val _stateFlow = MutableStateFlow(-1)
val stateFlow = _stateFlow.asStateFlow()
cardView.onClickListener {
_stateFlow.value = absoluteAdapterPosition
}
Hej Chrisu,
statflow应该是Adapter
的一部分,当您构建新的ViewHolder
时,将变量注入ViewHolder
。这样,stateFlow只创建一次,所有的持有者都可以观察到它。
像这样:
Adapter{
val stateFlow = MutableStateFlow(-1)
override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ViewHolder =
ViewHolder(stateFlow)
}
ViewHolder(val stateFlow: MutableStateFlow){
init{
cardView.onClickListener {
_stateFlow.value = absoluteAdapterPosition
}
}
}