带有RecyclerView适配器的Android ViewModel

问题描述

在需要进行网络调用的recyclerview适配器中处理事件的最佳实践是什么?因此,可以单击每个单元格以启动其他操作,其中可能包括网络呼叫。我假设您不会直接从适配器进行网络调用。但是适配器应该保留对片段的viewmodel的引用,从而能够直接通过视图模型进行网络调用,还是适配器仅将调用传递给片段,而片段则调用viewmodel?因此它将是适配器-> viewmodel->网络调用,或适配器->片段-> viewmodel->网络调用。不持有对viewmodel的引用的适配器对我来说是正确的,但是我想知道什么是最好的,或者它是否重要。

解决方法

我个人将创建一个Adapter(val onClick:(clickedId)-> Unit),并在ViewHolder的onBind期间传递该onClick。在Fragment / Activity端,我将其用作:Adapter(onClick = {viewModel.doSomethingWithNetwork(clickedId)}) 然后在viewModel有趣的doSomethingwithNetwork(){ 使用模型/用例触发调用并将结果发布到viewmodel中的livedata }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...