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

Tạo class CarFormFragment.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 32: Tạo class CarFormFragment.java

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

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;
}
}
}
});
}

}
}

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

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

Hỏi đáp (2)

Gửi với tên {{comment_full_name}}
D
dfgdfgfd 16/08/2023 11:50

dsdsfsd

Trả lời

D
dfgdfgfd 16/08/2023 11:52

dgdfgdf

Trả lời

Zalo 0936.006.058 Hotline 0936.006.058