package com.ckkj.water.plan; import android.os.Bundle; import android.view.View; import androidx.fragment.app.Fragment; import com.ckkj.water.R; import com.ckkj.water.base.BaseActivity; import com.ckkj.water.base.BaseFragment; import com.ckkj.water.databinding.AddWaterPlanLayoutBinding; import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.network.BaseBean; import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.mvp.WaterPlanContract; import com.ckkj.water.plan.mvp.WaterPlanImpl; import com.ckkj.water.plan.mvp.WaterPlanPresenter; import com.ckkj.water.plate.adapter.ViewPagerAdapter; import com.ckkj.water.utils.show.ToastUtil; import com.gyf.immersionbar.ImmersionBar; import java.util.ArrayList; import java.util.List; /** * 添加/编辑浇水排程 */ public class AddWaterPlanActivity extends BaseActivity implements WaterPlanContract.WaterPlanView { private List mFragmentList = new ArrayList<>(); private boolean mIsEditMode = false; private WaterPlanWeekEntity mEditEntity; private WaterPlanWeekEntity mNewAddEntity; // private List mSelectedDevices = new ArrayList<>(); // // public List getSelectedDevices() { // return mSelectedDevices; // } // // public void setSelectedDevices(List selectedDevices) { // this.mSelectedDevices = selectedDevices; // } @Override public WaterPlanPresenter createPresenter() { return new WaterPlanPresenter(new WaterPlanImpl()); } @Override public void initData(Bundle savedInstanceState) { super.initData(savedInstanceState); ImmersionBar.with(this) .statusBarColor(R.color.color_F9F9F9) // 设置状态栏颜色 .statusBarDarkFont(true) // 设置状态栏字体为黑色 .titleBar(viewBinding.rlTitle) .init(); Bundle bundle = getIntent().getExtras(); if (bundle != null) { mIsEditMode = bundle.getBoolean("is_edit", false); mEditEntity = (WaterPlanWeekEntity) bundle.getSerializable("plan_entity"); } // 根据模式设置标题 if (mIsEditMode) { viewBinding.includedTitle.tvTitle.setText(R.string.edit_water_plan_title); } else { viewBinding.includedTitle.tvTitle.setText(R.string.add_water_plan_title); } mFragmentList.add(new WaterConfigFragment()); mFragmentList.add(new BindDeviceFragment()); ViewPagerAdapter adapter = new ViewPagerAdapter(mContext, mFragmentList); viewBinding.viewpage.setAdapter(adapter); viewBinding.viewpage.setCurrentItem(0); //viewpage2 特有的 api,禁止滑动 viewBinding.viewpage.setUserInputEnabled(false); viewBinding.tvConfig.setSelected(true); viewBinding.tvBind.setSelected(false); initListener(); // 编辑模式下,延迟传递数据给 WaterConfigFragment,等 viewBinding 初始化完成后调用 if (mIsEditMode && mEditEntity != null) { viewBinding.viewpage.post(() -> { WaterConfigFragment configFragment = (WaterConfigFragment) mFragmentList.get(0); configFragment.setEditEntity(mEditEntity); }); } } private void initListener() { setClick(viewBinding.includedTitle.imgBack); setClick(viewBinding.tvConfig); setClick(viewBinding.tvBind); } private void setClick(View view) { view.setOnClickListener(this::onClick); } public void onClick(View v){ switch (v.getId()){ case R.id.img_back: finish(); break; case R.id.tv_config: viewBinding.tvConfig.setSelected(true); viewBinding.tvBind.setSelected(false); viewBinding.viewpage.setCurrentItem(0); break; case R.id.tv_bind: WaterConfigFragment configFragment = (WaterConfigFragment) mFragmentList.get(0); if (!configFragment.checkConfigFinish()) { ToastUtil.showShort(mContext, "请完成配置"); return; } // 编辑模式下,检查配置是否有变化 if (mIsEditMode) { if (configFragment.isConfigChanged()) { showDialogtext(mContext.getResources().getDrawable(R.mipmap.img_location), false, false, true, "提示", "配置已修改,是否保存?", "取消", "保存", new BaseFragment.OnDialogClick() { @Override public void onCancelClick() { selectTabBind(mEditEntity); } @Override public void onConfirmClick() { configFragment.commitConfig(); } }); } else { selectTabBind(mEditEntity); } } else { // 新增模式,检查配置是否已保存 if (!configFragment.isConfigSave || configFragment.isConfigChanged()) { showDialogtext(mContext.getResources().getDrawable(R.mipmap.img_location), false, false, true, "提示", "关联设备需要保存排程配置,是否继续?", "取消", "继续", new BaseFragment.OnDialogClick() { @Override public void onCancelClick() { } @Override public void onConfirmClick() { configFragment.commitConfig(); } }); } else { selectTabBind(null); } } break; } } private void selectTabBind(WaterPlanWeekEntity entity) { viewBinding.tvConfig.setSelected(false); viewBinding.tvBind.setSelected(true); viewBinding.viewpage.setCurrentItem(1); // 传递排程数据给 BindDeviceFragment BindDeviceFragment bindDeviceFragment = (BindDeviceFragment) mFragmentList.get(1); bindDeviceFragment.setPlanEntity(entity); } public void onConfigSaved(WaterPlanWeekEntity entity) { selectTabBind(entity); } @Override public int getLayoutResId(Bundle savedInstanceState) { return 0; } @Override public void showError(String message) { } @Override public void logOut(BaseBean bean) { } @Override public void getWaterConfigListSuccess(List list,int total) { } @Override public void saveConfigSuccess(WaterPlanWeekEntity entity) { } @Override public void updateConfigSuccess(WaterPlanWeekEntity entity) { } @Override public void updatePlanStatusSuccess(BaseBean bean, String status) { } @Override public void getPlanDetailInfo(WaterPlanWeekEntity entity) { } @Override public void getPlanBindDeviceList(WaterDeviceEntity bean) { } @Override public void planBindDeviceSuccess(BaseBean bean) { } @Override public void deletePlanSuccess(BaseBean bean) { } }