recyclerview中viewholder和flow如何处理?

问题描述 投票:0回答:1

我想用我的变量

flow
来保存
integer
并保留他。然后,recyclerview 中的每个视图持有者都会观察流程并在单击时做出反应。例如:

当我点击我使用的方法时,我有

cardView

statusButtons.toggleVisibility(!statusButtons.isVisible)

..然后我的元素会像在滑动模式下一样公开,如果我单击另一个元素,前一个元素应该(向后滑动)或者在我的情况下只是

toggleVisisbility
isNotVisible

现在,如果我每次点击我的元素时,我只触发这一个元素,这样我就无法隐藏其他元素并对此进行操作。

现在我是这样开始的:

    val _stateFlow = MutableStateFlow(-1)
    val stateFlow = _stateFlow.asStateFlow()


cardView.onClickListener {

_stateFlow.value = absoluteAdapterPosition
}
android android-recyclerview android-livedata android-viewholder kotlin-stateflow
1个回答
0
投票

Hej Chrisu,

stateFlow 应该是您的

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


© www.soinside.com 2019 - 2024. All rights reserved.