Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt

Xây dựng lớp CarViewModel.java - Ví lập trình android quản lý car

Ví lập trình android quản lý car

← Toàn bộ tài liệu


Bước 18: Xây dựng lớp CarViewModel.java

Bài 18/36 Xem dạng sách

Tên file: CarViewModel.java

Nơi lưu file: java/com/vantinviet/adayroionline/viewmodel/car (chú ý bạn cần tạo các sub package nhé)

Nội dung file:

 

package com.vantinviet.adayroionline.viewmodel.car;
import com.vantinviet.adayroionline.ApiResponse.ApiResponseGetCar;
import com.vantinviet.adayroionline.ApiResponse.ApiResponseUser;
import com.vantinviet.adayroionline.Config;
import com.vantinviet.adayroionline.repository.car.CarRepository;
import com.vantinviet.adayroionline.utils.AbsentLiveData;
import com.vantinviet.adayroionline.utils.Utils;
import com.vantinviet.adayroionline.viewmodel.common.PSViewModel;
import com.vantinviet.adayroionline.viewmodel.order.OrderProductListViewModel;
import com.vantinviet.adayroionline.viewobject.Car;
import com.vantinviet.adayroionline.viewobject.User;
import com.vantinviet.adayroionline.viewobject.common.Resource;

import java.util.List;

import javax.inject.Inject;

import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Transformations;

public class CarViewModel extends PSViewModel {
private final LiveData<Resource<List<Car>>> carsData;
private MutableLiveData<TmpDataHolder> carsObj = new MutableLiveData<>();
private MutableLiveData<Car> updateCarObj = new MutableLiveData<>();
private LiveData<Resource<ApiResponseGetCar>> updateCarData;
private final LiveData<Resource<Boolean>> deletedCar;
private final LiveData<Resource<Boolean>> nextPageCarsData;
private MutableLiveData<TmpDataHolder> nextPageCarsObj = new MutableLiveData<>();

private final LiveData<Resource<Car>> carByIdData;
private MutableLiveData<CarByIdTmpDataHolder> carByIdObj = new MutableLiveData<>();
private MutableLiveData<CarViewModel.TmpDeleteCarDataHolder> tmpDeleteCarDataHolder = new MutableLiveData<>();

public Car car;

@Inject
CarViewModel(CarRepository carRepository) {

carsData = Transformations.switchMap(carsObj, obj -> {

if (obj == null) {
return AbsentLiveData.create();
}

return carRepository.getAllCar(obj.limit, obj.offset);

});

nextPageCarsData = Transformations.switchMap(nextPageCarsObj, obj -> {

if (obj == null) {
return AbsentLiveData.create();
}

return carRepository.getNextPageCarList( obj.limit, obj.offset);

});

carByIdData = Transformations.switchMap(carByIdObj, obj -> {

if (obj == null) {
return AbsentLiveData.create();
}

return carRepository.getCarById(obj.id);

});
// Update User
updateCarData = Transformations.switchMap(updateCarObj, obj -> {
if (obj == null) {
return AbsentLiveData.create();
}
Utils.psLog("UserViewModel : updateUserData");
return carRepository.updateCar(updateCarObj.getValue());
});
deletedCar = Transformations.switchMap(tmpDeleteCarDataHolder, tmpDeleteOrderDataHolder -> {
if (tmpDeleteOrderDataHolder == null) {
return AbsentLiveData.create();
}
return carRepository.getCarDelete(tmpDeleteCarDataHolder.getValue().carId);
});


}

public void setCarsObj(String limit, String offset) {
TmpDataHolder tmpDataHolder = new TmpDataHolder(limit, offset);

this.carsObj.setValue(tmpDataHolder);
}

public LiveData<Resource<List<Car>>> getCarsData() {
return carsData;
}

public void setNextPageCarsObj(String limit, String offset) {
TmpDataHolder tmpDataHolder = new TmpDataHolder(limit, offset);

this.nextPageCarsObj.setValue(tmpDataHolder);
}

public LiveData<Resource<Boolean>> getNextPageCarsData() {
return nextPageCarsData;
}

public void setCarByIdObj(String id) {
CarByIdTmpDataHolder carByIdTmpDataHolder = new CarByIdTmpDataHolder(id);

this.carByIdObj.setValue(carByIdTmpDataHolder);
}

public LiveData<Resource<Car>> getCarByIdData() {
return carByIdData;
}
public void setUpdateCarObj(Car car) {
updateCarObj.setValue(car);
}
public LiveData<Resource<ApiResponseGetCar>> getUpdateCarData() {

return updateCarData;
}
public LiveData<Resource<Boolean>> getDeletedCar() {
return deletedCar;
}
public void setDeleteCarObj(String carId) {
if (!isLoading) {
CarViewModel.TmpDeleteCarDataHolder tmpDeleteCarDataHolder = new CarViewModel.TmpDeleteCarDataHolder();
tmpDeleteCarDataHolder.carId = carId;
this.tmpDeleteCarDataHolder.setValue(tmpDeleteCarDataHolder);
// start loading
setLoadingState(true);
}
}
class TmpDataHolder {

String limit, offset;

public TmpDataHolder(String limit, String offset) {
this.limit = limit;
this.offset = offset;
}
}

class CarByIdTmpDataHolder {

String id;

private CarByIdTmpDataHolder(String id) {
this.id = id;
}
}
class TmpDeleteCarDataHolder {
public String carId = "";
public Boolean isConnected = false;
}
}

Sơ đồ quan hệ các bảng

Table Name: {{table.name}}
Num Name Type
{{field_index+1}}
{{field.name}} {{field.type}}

Hỏi đáp

Gửi với tên {{comment_full_name}}

Chưa có câu hỏi nào cho bài này.

Zalo 0936.006.058 Hotline 0936.006.058