gpt4 book ai didi

android - 用刀柄注入(inject) viewModel

转载 作者:行者123 更新时间:2023-12-04 08:55:07 25 4
gpt4 key购买 nike

我想使用 Hilt 将我的 viewModel 注入(inject)到 RecyclerView 中。它可以注入(inject),但 viewModel 在 recyclerView 销毁时不会销毁。使用 hilt 将 viewModel 注入(inject)到 recyclerView 中的最佳方法是什么?

最佳答案

最好的方法是创建单独的适配器和 viewholder 类,然后您可以将 viewModel 注入(inject)该 viewholder 类而不是适配器。要销毁 viewModel,您应该通过观​​察父生命周期手动完成。当父生命周期事件为 ON_DESTROY 时,在适配器类的 init block 中执行类似的操作。

parentLifecycle.addObserver(object : LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onParentDestroy() {
recyclerView?.run {
for (i in 0 until childCount) {
getChildAt(i)?.let {
(getChildViewHolder(it) as BaseItemViewHolder<*, *>)
.run {
onDestroy()
viewModel.onManualCleared()
}
}
}
}
}
}

这里 onManualCleared() 函数调用 onCleared()

关于android - 用刀柄注入(inject) viewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63871391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com