2 回答

TA贡献1825条经验 获得超4个赞
将您的请求更改为视图模型
class PaymentMethodSelectionViewModel: ViewModel() {
//Data
var paymentMethodList = MutableLiveData<List<PaymentMethodModel>>()
fun getAllPayments(){
val retrofit = Retrofit.Builder()
.baseUrl(SERVICE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
val service = retrofit.create(PaymentClient::class.java)
val jsonCall = service.getListOfPaymentMethods()
jsonCall.enqueue(object : Callback<List<PaymentMethodModel>> {
override fun onResponse(call: Call<List<PaymentMethodModel>>, response: Response<List<PaymentMethodModel>>) {
var data: List<PaymentMethodModel> = (response.body() as ArrayList<PaymentMethodModel>?)!!
paymentMethodList.value=data
}
override fun onFailure(call: Call<List<PaymentMethodModel>>, t: Throwable) {
//TODO
}
})
}
}
在您的视图(活动)使用
//load
paymentMethodSelectionViewModel.getAllPayments();
//Observers
paymentMethodSelectionViewModel.paymentMethodList.observe(this,
Observer { list ->
// your code
})
我建议您将改装2与冠状图或RXJAVA2一起使用,请查看本教程
https://medium.com/@amtechnovation/android-architecture-component-mvvm-part-1-a2e7cff07a76

TA贡献1757条经验 获得超8个赞
每次使用LiveData时,您都必须决定何时所有观察者都收到更新通知。
您可以通过调用付款方法列表的过帐功能来执行此通知。这是在 Java 中使用实时数据的正确方法。
在 Kotlin 中,我认为您必须在 onResponse 方法中添加类似如下的内容:
paymentMethodListLiveData.value = paymentMethodList;
以隐式调用观察函数中的 post 方法和触发器方法。
希望这有帮助或给你一些提示。
干杯
添加回答
举报