Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt
Tên file: CarFormFragment.java
Nơi lưu file: java/com/vantinviet/adayroionline/ui/car/form (Chu ý là bạn cần tạo các sub package nhé)
Nội dung file:
package com.vantinviet.adayroionline.ui.car.form;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProviders;
import com.vantinviet.adayroionline.R;
import com.vantinviet.adayroionline.binding.FragmentDataBindingComponent;
import com.vantinviet.adayroionline.databinding.FragmentCarFormBinding;
import com.vantinviet.adayroionline.ui.common.PSFragment;
import com.vantinviet.adayroionline.utils.AutoClearedValue;
import com.vantinviet.adayroionline.utils.Constants;
import com.vantinviet.adayroionline.utils.PSDialogMsg;
import com.vantinviet.adayroionline.utils.Utils;
import com.vantinviet.adayroionline.viewmodel.car.CarViewModel;
import com.vantinviet.adayroionline.viewobject.Car;
import com.vantinviet.adayroionline.viewobject.User;
public class CarFormFragment extends PSFragment {
private final androidx.databinding.DataBindingComponent dataBindingComponent = new FragmentDataBindingComponent(this);
private CarViewModel carViewModel;
private String carId;
private PSDialogMsg psDialogMsg;
private AutoClearedValue<ProgressDialog> prgDialog;
@VisibleForTesting
private AutoClearedValue<FragmentCarFormBinding> binding;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
FragmentCarFormBinding dataBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_car_form, container, false, dataBindingComponent);
binding = new AutoClearedValue<>(this, dataBinding);
return binding.get().getRoot();
}
@Override
protected void initUIAndActions() {
psDialogMsg = new PSDialogMsg(getActivity(), false);
binding.get().saveButton.setOnClickListener(view -> CarFormFragment.this.editCarData());
binding.get().cancelButton.setOnClickListener(view -> {
navigationController.navigateToCarList(getActivity());
});
// Init Dialog
prgDialog = new AutoClearedValue<>(this, new ProgressDialog(getActivity()));
prgDialog.get().setMessage((Utils.getSpannableString(getContext(), getString(R.string.message__please_wait), Utils.Fonts.MM_FONT)));
prgDialog.get().setCancelable(false);
}
private void editCarData() {
if (!connectivity.isConnected()) {
psDialogMsg.showWarningDialog(getString(R.string.no_internet_error), getString(R.string.app__ok));
psDialogMsg.show();
return;
}
String carName = binding.get().carNameEditText.getText().toString();
if (carName.equals("")) {
psDialogMsg.showWarningDialog(getString(R.string.error_message__blank_name), getString(R.string.app__ok));
psDialogMsg.show();
return;
}
String carColor = binding.get().carColorEditText.getText().toString();
if (carColor.equals("")) {
psDialogMsg.showWarningDialog(getString(R.string.error_message__blank_color), getString(R.string.app__ok));
psDialogMsg.show();
return;
}
String carModel = binding.get().carModelEditText.getText().toString();
if (carModel.equals("")) {
psDialogMsg.showWarningDialog(getString(R.string.error_message__blank_model), getString(R.string.app__ok));
psDialogMsg.show();
return;
}
updateCarData();
carViewModel.getUpdateCarData().observe(this, apiResponseGetCar -> {
if (apiResponseGetCar != null) {
Utils.psLog("Got Data" + apiResponseGetCar.message + apiResponseGetCar.toString());
switch (apiResponseGetCar.status) {
case LOADING:
// Loading State
// Data are from Local DB
// if(listResource.data != null){
// fadeIn(binding.get().getRoot());
// }
break;
case SUCCESS:
// Success State
// Data are from Server
if (apiResponseGetCar.data != null) {
// userViewModel.updateUser(userViewModel.user);
psDialogMsg.showSuccessDialog(apiResponseGetCar.data.errorMessage, getString(R.string.app__ok));
psDialogMsg.show();
psDialogMsg.okButton.setOnClickListener(view -> {
psDialogMsg.cancel();
navigationController.navigateToCarList(getActivity());
});
}
carViewModel.setLoadingState(false);
prgDialog.get().cancel();
break;
case ERROR:
// Error State
psDialogMsg.showErrorDialog(apiResponseGetCar.message, getString(R.string.app__ok));
psDialogMsg.show();
prgDialog.get().cancel();
carViewModel.setLoadingState(false);
break;
default:
break;
}
} else {
// Init Object or Empty Data
Utils.psLog("Empty Data");
}
});
}
private void updateCarData() {
Car car = new Car(
carId,
binding.get().carNameEditText.getText().toString(),
binding.get().carModelEditText.getText().toString(),
binding.get().carColorEditText.getText().toString(),
binding.get().carDescriptionEditText.getText().toString(),
""
);
carViewModel.setUpdateCarObj(car);
prgDialog.get().show();
}
private boolean checkToUpdateCar() {
return binding.get().carNameTextView.getText().toString().equals(carViewModel.car.carName) &&
binding.get().carModelEditText.getText().toString().equals(carViewModel.car.carModel) &&
binding.get().carColorEditText.getText().toString().equals(carViewModel.car.carColor);
}
@Override
protected void initViewModels() {
carViewModel = ViewModelProviders.of(this, viewModelFactory).get(CarViewModel.class);
}
@Override
protected void initAdapters() {
}
@Override
protected void initData() {
if (getActivity() != null) {
carId = getActivity().getIntent().getStringExtra(Constants.CAR_ID);
}
if (carId != null && !carId.isEmpty()) {
carViewModel.setCarByIdObj(carId);
carViewModel.getCarByIdData().observe(this, result -> {
if (result != null) {
if (result.data != null) {
switch (result.status) {
case SUCCESS:
binding.get().setCar(result.data);
break;
case ERROR:
psDialogMsg.showErrorDialog(getString(R.string.car_detail_error_message), getString(R.string.app__ok));
psDialogMsg.show();
break;
case LOADING:
binding.get().setCar(result.data);
break;
}
}
}
});
}
}
}
dgdfgdf