Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ANDROID在一个活动或片段内观察到多个可变LiveData_Android_Android Recyclerview_Retrofit_Android Viewmodel_Mutablelivedata - Fatal编程技术网

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()
    }
}*/