해결된 질문
작성
·
241
0
java.lang.IllegalStateException: it must not be null 이런 에러가 나와서 확인해봤는데..
data class StoreInfo (var count : Int, var Stores: List<Store>)
이렇게 되어있고
viewModel.apply {
itemLiveData.observe(this@MainActivity, Observer {
Log.e("tag", "뭐야 " + it)
storeAdapter.updateItems(it)
})
loadingLiveData.observe(this@MainActivity, Observer { isLoading ->
progressBar.visibility = if (isLoading) View.VISIBLE else View.GONE
})
}
}
data class Store(
var addr : String,
var code : String,
var created_at : String,
var lat : Double,
var lng : Double,
var name : String,
var remain_stat : String,
var stock_at : String,
var type : String
)
빠진거 없이 넣었는데 저기 로그 (뭐야) 찍어놓은곳이 count는 찍히늰데 stores가 null이 나옵니다
어디를 확인해봐야되는건가요..?
답변 3
1
0
class MainViewModel : ViewModel() {
val itemLiveData = MutableLiveData<List<Store>>()
val loadingLiveData = MutableLiveData<Boolean>()
private val service : MaskService
init {
val retrofit = Retrofit.Builder()
.baseUrl(MaskService.BASE_URL)
.addConverterFactory(MoshiConverterFactory.create())
.build()
service = retrofit.create(MaskService::class.java)
fetchStoreInfo()
}
fun fetchStoreInfo() {
loadingLiveData.value = true
viewModelScope.launch {
val storeInfo = service.fetchStoreInfo(37.188078, 127.043002)
Log.e("tag", "info "+ storeInfo.Stores)
itemLiveData.value = storeInfo.Stores
loadingLiveData.value = false
}
}
}
해당과같이 Mutable데LiveData로 초기화 하고있고 location은 강의대로 고정 위도경도 넣어주고있습니다
(강의에서처럼 코틀린에선 현재 위도경도 안써서 강의대로 안쓰고 저렇게 넣어놨습니다!)
저기 info로 로그찍은 곳은 null이나옵니다 (itemLiveData도 null 로 들어가겠네요..)
storeInfo.count로 하는경우에는 count가 222로 잘나오며 storeInfo.Stores만 자꾸 null이 나옵니다
0
1. ViewModel에서 itemLiveData를 MutableLiveData로 제대로 초기화 했는지.
2. itemLiveData 값이 제대로 들어오는지
3. locationProvider에서 위치 정보를 얻을 때 location이 null 인지
확인 해 보셔야 할 것 같습니다.