问题描述
在需要进行网络调用的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 }