如何处理viewholder和flow在recyclerview?



我想用我的变量flow来保存integer并保留他。然后,recyclerview中的每个视图持有人观察流,并在点击时做出反应。例如:

我有cardView当我点击它时,我使用方法

statusButtons.toggleVisibility(!statusButtons.isVisible)

. .然后我的元素像滑动模式一样暴露,如果我点击另一个元素,前一个元素应该(滑动回来),或者在我的情况下只是toggleVisisbilityisNotVisible

现在,如果我每次点击我的元素,我只触发这一个元素,所以我不能隐藏其他元素,并对其进行操作。

现在我是这样开始的:

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

最新更新