Files
Android-WaterProject/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java
2026-05-27 17:08:57 +08:00

238 lines
7.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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<AddWaterPlanLayoutBinding, WaterPlanPresenter>
implements WaterPlanContract.WaterPlanView {
private List<Fragment> mFragmentList = new ArrayList<>();
private boolean mIsEditMode = false;
private WaterPlanWeekEntity mEditEntity;
private WaterPlanWeekEntity mNewAddEntity;
// private List<WaterPlanWeekEntity.DeviceEntity> mSelectedDevices = new ArrayList<>();
//
// public List<WaterPlanWeekEntity.DeviceEntity> getSelectedDevices() {
// return mSelectedDevices;
// }
//
// public void setSelectedDevices(List<WaterPlanWeekEntity.DeviceEntity> 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<WaterPlanWeekEntity> 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) {
}
}