无需任何第三方即可将数据从存储库传递到 View Model

Pass data from repository to View Model without any third-party

我想return不使用任何第三方

将数据从存储库传输到视图模型

    class MyRepository{
        
    // Some code that return the data from webservice
        
}


class MyViewModel:ViewModel(){
    
init{
    val repo= MyRepository()
    MyRepository.getData()
}
    
    //I need a way to operate on the data that I get from repository
    
    }

ViewModel 调用 -> Repoistory 获取数据 -> ViewModel 对数据进行操作

没有第三方库..只有 android studio SDK。

您可以使用回调在工作完成时收到通知。这样做的方法是将视图模型作为参数传递给将执行工作的方法。我建议您定义一个接口,这样存储库不直接依赖于视图模型,而是一个接口。

解决方案类似于:

interface WebServiceCallback {
    fun onWebServiceSuccess(data: MyObject)
    fun onWebServiceError(error: MyError)
}

class MyViewModel: ViewModel(), WebServiceCallback {

    init {
        val repo = MyRepository()
        repo.getData(this)
    }

    override fun onWebServiceSuccess(data: MyObject) {
        //Implementation of what to do on success
    }

    override fun onWebServiceError(error: MyError) {
        //Implementation of what to do on failure
    }
}

class MyRepository { 
    fun getData(callback: WebServiceCallback) {
        //Do your service call however you have implemented it
        if(serviceResponse.isSuccess() == true) {
            callback.onWebServiceSuccess(serviceResponse.data)
        } else {
            callback.onWebServiceError(serviceResponse.error)
        }
    }
}
    

此解决方案将在您完成 repo 上的工作后调用视图模型上的相应方法。希望这个回答对你有帮助。