无需任何第三方即可将数据从存储库传递到 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 上的工作后调用视图模型上的相应方法。希望这个回答对你有帮助。
我想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 上的工作后调用视图模型上的相应方法。希望这个回答对你有帮助。