ANDROID在一个活动或片段内观察到多个可变LiveData
我把这个代码放在一个片段中ANDROID在一个活动或片段内观察到多个可变LiveData,android,android-recyclerview,retrofit,android-viewmodel,mutablelivedata,Android,Android Recyclerview,Retrofit,Android Viewmodel,Mutablelivedata,我把这个代码放在一个片段中 private lateinit var carViewModel: CarViewModel private lateinit var recyclerView: RecyclerView private lateinit var cars: List<Car> override fun onCreateView( inflater: LayoutInflater, container: ViewGrou
private lateinit var carViewModel: CarViewModel
private lateinit var recyclerView: RecyclerView
private lateinit var cars: List<Car>
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val root = inflater.inflate(R.layout.fragment_home, container, false)
carViewModel = ViewModelProvider(this).get(CarViewModel::class.java)
cars = emptyList()
fun setRecylerView(cars: List<Car>){
recyclerView = root.findViewById(R.id.recycler_view)
recyclerView.adapter = CarCardAdapter(cars)
recyclerView.layoutManager = LinearLayoutManager(context)
}
setRecylerView(cars)
carViewModel.currentName.observe(viewLifecycleOwner, Observer { response ->
if (response.success){
Log.d("Message", response.message.toString())
Log.d("Success", response.success.toString())
cars = response.data.toCollection(ArrayList())
}
else
{
Log.d("Message", response.message.toString())
Log.d("Success", response.success.toString())
}
})
setRecylerView(cars)
return root
}
CarViewModel
我都试过了
class CarViewModel () : ViewModel() {
private val repository: CarRepository = CarRepository()
lateinit var carDataResponse: MutableLiveData<DataResponseModel<Car>>
lateinit var carDetailDataResponse: MutableLiveData<DataResponseModel<CarDetail>>
lateinit var carDetailSingleDataResponse: MutableLiveData<SingleDataResponseModel<CarDetail>>
lateinit var carSingleDataResponse: MutableLiveData<SingleDataResponseModel<Car>>
lateinit var carResponse: MutableLiveData<ResponseModel>
fun getAllCars(): MutableLiveData<DataResponseModel<Car>> {
viewModelScope.launch {
carDataResponse = repository.getAllCars()
}
return carDataResponse
}
val currentName: MutableLiveData<DataResponseModel<Car>> by lazy {
repository.getAllCars()
}
/*fun getAllCars() {
viewModelScope.launch {
carDataResponse = repository.getAllCars()
}
}*/
类CarViewModel():ViewModel(){
私有val存储库:CarRepository=CarRepository()
lateinit var carDataResponse:MutableLiveData
lateinit var carDetailDataResponse:MutableLiveData
lateinit var carDetailSingleDataResponse:MutableLiveData
lateinit var carSingleDataResponse:MutableLiveData
lateinit var carResponse:MutableLiveData
fun getAllCars():可变LiveData{
viewModelScope.launch{
carDataResponse=repository.getAllCars()
}
返回卡片应答
}
val currentName:MutableLiveData by lazy{
repository.getAllCars()
}
/*趣味汽车{
viewModelScope.launch{
carDataResponse=repository.getAllCars()
}
}*/
我认为方法是从后端更改代码,使其对前端有用不要弄乱前端中的数据发布您的
视图模型
代码。
class CarViewModel () : ViewModel() {
private val repository: CarRepository = CarRepository()
lateinit var carDataResponse: MutableLiveData<DataResponseModel<Car>>
lateinit var carDetailDataResponse: MutableLiveData<DataResponseModel<CarDetail>>
lateinit var carDetailSingleDataResponse: MutableLiveData<SingleDataResponseModel<CarDetail>>
lateinit var carSingleDataResponse: MutableLiveData<SingleDataResponseModel<Car>>
lateinit var carResponse: MutableLiveData<ResponseModel>
fun getAllCars(): MutableLiveData<DataResponseModel<Car>> {
viewModelScope.launch {
carDataResponse = repository.getAllCars()
}
return carDataResponse
}
val currentName: MutableLiveData<DataResponseModel<Car>> by lazy {
repository.getAllCars()
}
/*fun getAllCars() {
viewModelScope.launch {
carDataResponse = repository.getAllCars()
}
}*/