我是Kotlin的新手,无法解决这个例外,我尝试了不同的解决方案,从网上。 我正在从api中获取数据列表,并希望通过数据绑定将其分配给旋转器,但当我将其分配给api调用的成功块中的可变arraylist时,代码崩溃了。
这是我的列表声明
private val _operators: MutableLiveData<ArrayList<Networks>>? = NotNullMutableLiveData(arrayListOf())
val operators: MutableLiveData<ArrayList<Networks>>? get() = _operators
Api调用
fun getShops() {
addToDisposable(api.getShoppingList().with()
.doOnSubscribe {}
.doOnSuccess {}
.doOnError {}
.subscribe({ result ->
// getting crash here
_operators?.value = result.Data.get(0).items as
ArrayList<Networks>
}, { error ->
})
)
}
撞车
Caused by: kotlin.TypeCastException: null cannot be cast to non-null type kotlin.collections.ArrayList<com.tapmad.apis.viewModels.MobileNetworks> /* = java.util.ArrayList<com.tapmad.apis.viewModels.MobileNetworks> */
at com.tapmad.apis.models.SubscriptionViewModel$getAllPaymentNetworks$4.accept(SubscriptionViewModel.kt:110)
at com.tapmad.apis.models.SubscriptionViewModel$getAllPaymentNetworks$4.accept(SubscriptionViewModel.kt:18)
at io.reactivex.internal.observers.ConsumerSingleObserver.onSuccess(ConsumerSingleObserver.java:63)
at io.reactivex.internal.operators.single.SingleDoOnError$DoOnError.onSuccess(SingleDoOnError.java:52)
at io.reactivex.internal.operators.single.SingleDoOnSuccess$DoOnSuccess.onSuccess(SingleDoOnSuccess.java:59)
at io.reactivex.internal.operators.single.SingleDoOnSubscribe$DoOnSubscribeSingleObserver.onSuccess(SingleDoOnSubscribe.java:77)
at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:81)
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
您的MobileNetworks
列表是NULL
以避免NPE
添加?
操作符以检查可为空
_operators?.value = result.PaymentMethods.get(0).mobileNetworks as
ArrayList<MobileNetworks>?