Linjiajia
2023-10-26 ecaf8069072e71db4bff94671e72764b211d6af1
app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismDetailActivity.java
@@ -1,26 +1,43 @@
package com.application.zhangshi_app_android.ui.function;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.PopupWindow;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.BaseConfig;
import com.android.app_base.base.dialog.BaseDialog;
import com.android.app_base.base.dialog.UIDialog;
import com.android.app_base.utils.ScreenSizeUtils;
import com.android.app_base.utils.Utils;
import com.android.app_base.utils.rxbus.MessageEvent;
import com.android.app_base.utils.rxbus.RxBus;
import com.android.app_base.widget.LinearItemDecoration;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.DailyConsumeRecordRvAdapter;
import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
import com.application.zhangshi_app_android.bean.PrivacyBean;
import com.application.zhangshi_app_android.bean.ConsumeRecordBean;
import com.application.zhangshi_app_android.bean.DailyConsumeRecordBean;
import com.application.zhangshi_app_android.bean.TourismBean;
import com.application.zhangshi_app_android.databinding.ActivityPrivacyDetailBinding;
import com.application.zhangshi_app_android.databinding.ActivityTourismDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import com.github.gzuliyujiang.wheelpicker.DatePicker;
import com.github.gzuliyujiang.wheelpicker.OptionPicker;
import com.github.gzuliyujiang.wheelpicker.annotation.DateMode;
import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener;
import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import io.reactivex.functions.Consumer;
/**
 * @author Ljj
@@ -28,8 +45,8 @@
 * @desc
 */
public class TourismDetailActivity extends DLBaseActivity<ActivityTourismDetailBinding,TourismDetailActivityViewModel> {
    private DailyConsumeRecordRvAdapter adapter;
    private int type;// 0 查看可修改删除 1 新增 2 直接修改
    private PopupWindow popupWindow;
    @Override
    public int getLayoutId() {
@@ -43,19 +60,157 @@
    @Override
    public void initParam() {
        if (getIntent().hasExtra("bean")){
            viewModel.getBeanLiveData().setValue((TourismBean) getIntent().getSerializableExtra("bean"));
        type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0);
        if (type == 0 || type == 2){
            TourismBean bean = (TourismBean) getIntent().getSerializableExtra("bean");
            if (bean != null){
                viewModel.getBeanLiveData().setValue(bean);
            }
        }
    }
    @Override
    public void initView() {
        adapter = new DailyConsumeRecordRvAdapter(this);
        LinearItemDecoration itemDecoration = new LinearItemDecoration();
        itemDecoration.setBottomSpace(ScreenSizeUtils.dip2px(this,20));
        binding.rvDailyConsumeRecord.addItemDecoration(itemDecoration);
        binding.rvDailyConsumeRecord.setNestedScrollingEnabled(false);
        setIsEdited(false);
        if (type == 1){
            viewModel.getTypeLiveData().setValue(true);
            binding.titleBar.setTitle("新增旅游费用记录");
        }else if (type == 0){
            popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null));
            popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    viewModel.getTypeLiveData().setValue(true);
                    popupWindow.dismiss();
                }
            });
            popupWindow.getContentView().findViewById(R.id.tv_delete).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    popupWindow.dismiss();
                    new UIDialog.Builder(getSelfActivity())
                            .setTitle("您确定要删除项目吗")
                            .setContent("项目删除后将无法恢复")
                            .setConfirm("确定")
                            .setCancel("取消")
                            .setListener(new UIDialog.OnListener() {
                                @Override
                                public void onConfirm(BaseDialog dialog) {
                                    viewModel.delete();
                                }
                            })
                            .show();
                }
            });
            viewModel.getTypeLiveData().setValue(false);
        }else if (type == 2){
            viewModel.getTypeLiveData().setValue(true);
        }
        binding.etStartTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatePicker datePicker = getDatePicker();
                datePicker.setTitle("选择开始时间");
                datePicker.setOnDatePickedListener(new OnDatePickedListener() {
                    @Override
                    public void onDatePicked(int year, int month, int day) {
                        //以yyyy-MM-dd的格式显示,月日小于10时前面补0
                        binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day));
                        String startTime = binding.etStartTime.getText().toString();
                        String endTime = binding.etEndTime.getText().toString();
                        if (TextUtils.isEmpty(endTime)){
                            binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day));
                            endTime = binding.etEndTime.getText().toString();
                        }else {
                            //比较开始时间和结束时间的大小
                            if (Utils.compareDate(startTime,endTime) > 0){
                                //交换
                                binding.etStartTime.setText(endTime);
                                binding.etEndTime.setText(startTime);
                            }
                        }
                        binding.etStartTime.clearFocus();
                    }
                });
                datePicker.show();
            }
        });
        binding.etEndTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatePicker datePicker = getDatePicker();
                datePicker.setTitle("选择结束时间");
                datePicker.setOnDatePickedListener(new OnDatePickedListener() {
                    @Override
                    public void onDatePicked(int year, int month, int day) {
                        binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month , day));
                        String startTime = binding.etStartTime.getText().toString();
                        String endTime = binding.etEndTime.getText().toString();
                        if (TextUtils.isEmpty(startTime)){
                            binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day));
                            startTime = binding.etStartTime.getText().toString();
                        }else {
                            //比较开始时间和结束时间的大小
                            if (Utils.compareDate(startTime,endTime) > 0){
                                //交换
                                binding.etStartTime.setText(endTime);
                                binding.etEndTime.setText(startTime);
                            }
                        }
                        binding.etEndTime.clearFocus();
                    }
                });
                datePicker.show();
            }
        });
        binding.etWhereabouts.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<String> list = Arrays.asList("国内","国外");
                OptionPicker picker = getOptionPicker(list);
                picker.setTitle("选择去向");
                picker.setOnOptionPickedListener(new OnOptionPickedListener() {
                    @Override
                    public void onOptionPicked(int position, Object item) {
                        binding.etWhereabouts.setText(item.toString());
                        binding.etWhereabouts.clearFocus();
                    }
                });
                picker.show();
            }
        });
        binding.etTourismNature.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<String> list = Arrays.asList("公费","自费","邀请");
                OptionPicker picker = getOptionPicker(list);
                picker.setTitle("选择旅游性质");
                picker.setOnOptionPickedListener(new OnOptionPickedListener() {
                    @Override
                    public void onOptionPicked(int position, Object item) {
                        binding.etTourismNature.setText(item.toString());
                        binding.etTourismNature.clearFocus();
                    }
                });
                picker.show();
            }
        });
        binding.etTourismWay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<String> list = Arrays.asList("参团","自由行","自驾游","半自由半自驾","其他");
                OptionPicker picker = getOptionPicker(list);
                picker.setTitle("选择旅游方式");
                picker.setOnOptionPickedListener(new OnOptionPickedListener() {
                    @Override
                    public void onOptionPicked(int position, Object item) {
                        binding.etTourismWay.setText(item.toString());
                        binding.etTourismWay.clearFocus();
                    }
                });
                picker.show();
            }
        });
    }
    @Override
@@ -65,29 +220,25 @@
    @Override
    public void initLiveDataObserve() {
        viewModel.getBeanLiveData().observe(this,bean -> {
            if (bean!=null){
                adapter.setData(bean.getDailyConsumeRecordBeans());
        viewModel.getBeanLiveData().observe(this, bean -> {
        });
        viewModel.getTypeLiveData().observe(this, operateType -> {
            if (operateType) {
                if (type == 1) {
                    binding.ivOperate.setOnClickListener(v -> {
                        viewModel.add();
                    });
                } else {
                    binding.ivOperate.setOnClickListener(v -> {
                        viewModel.update();
                    });
                }
            } else {
                binding.ivOperate.setOnClickListener(v -> {
                    popupWindow.showAsDropDown(binding.ivOperate, -ScreenSizeUtils.dip2px(this, 85) + binding.ivOperate.getWidth(), 0);
                });
            }
        });
    }
    public void setIsEdited(boolean isEdited){
        disableAllEditText(getContentView(),isEdited);
    }
    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            if (child instanceof ViewGroup) {
                disableAllEditText((ViewGroup) child,isEdited);
            } else if (child instanceof EditText) {
                child.setEnabled(isEdited);
                child.setFocusable(isEdited);
                child.setFocusableInTouchMode(isEdited);
                if (!isEdited){
                    child.clearFocus();
                }
            }
        }
    }
}