我正在尝试向图书馆提出请求,要求我回电。
Manager.getInstance().request(new CallBack())
我想将其放在ViewModel中,以便可以从Activity
观察它。
class RequestViewModel : ViewModel, CallBack {
fun request() {
Manager.getInstance().request(this)
}
override fun onFinished(result : List<String>?) {
}
override fun onFailed() {
}
}
如何做到这一点,以便观察完成的时间?我知道我可以让我的Activity
实现这个CallBack
,但是我不想将Activity
与此结合。
理想情况下,这将是LiveData或Observable。
答案 0 :(得分:1)
如果我正确理解了这个问题,则可以将通过LiveData
方法获取的数据提交给class RequestViewModel : ViewModel, CallBack {
private val _liveData = MutableLiveData<SomeResult<List<String>>>
val liveData: LiveData<SomeResult<List<String>>> get() = _liveData
fun request() {
Manager.getInstance().request(this)
}
override fun onFinished(result : List<String>?) {
if (result != null) {
_liveData.postValue(SomeResult.success(result))
} else {
_liveData.postValue(SomeResult.failure())
}
}
override fun onFailed() {
_liveData.postValue(SomeResult.failure())
}
}
实例,该实例应由视图组件观察,例如
viewModel.liveData.observe(lifecycleOwner, Observer<List<String>> {
handleResponse(it)
})
对象中与视图组件相对应的某处:
lifecycleOwner
AppCompatActivity
通常是您的android.support.v4.Fragment
或public class SerialMatrix
{
public string SerialNumber { get; set; }
public Image DataMatrix { get; set; }
}
继承者。
答案 1 :(得分:0)
我建议您从ViewModel
分离请求,并创建一个名为Repository的类来处理所有请求。在此类中,您可以拥有一个MutableLiveData
对象,可以观察到该对象,并且每当检索到新的请求数据时,请将mutableLiveData.postValue(retrievedData)
用于MutableLiveData
即可通知观察值有关新的更改。
要了解有关存储库的更多信息,可以单击以下链接: