排程编辑更新

This commit is contained in:
fengjignqi
2026-05-26 15:31:26 +08:00
parent 5ca81f565a
commit 65dfc1b5f1
5 changed files with 92 additions and 3 deletions

View File

@@ -28,12 +28,14 @@ import java.util.List;
import de.greenrobot.event.EventBus;
/**
* 添加浇水排程
* 添加/编辑浇水排程
*/
public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding, WaterPlanPresenter>
implements WaterPlanContract.WaterPlanView {
private List<Fragment> mFragmentList = new ArrayList<>();
private boolean mIsEditMode = false;
private WaterPlanWeekEntity mEditEntity;
// private List<WaterPlanWeekEntity.DeviceEntity> mSelectedDevices = new ArrayList<>();
//
// public List<WaterPlanWeekEntity.DeviceEntity> getSelectedDevices() {
@@ -59,7 +61,20 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
.statusBarDarkFont(true) // 设置状态栏字体为黑色
.titleBar(viewBinding.rlTitle)
.init();
viewBinding.includedTitle.tvTitle.setText(R.string.add_water_plan_title);
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);
@@ -71,6 +86,14 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
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() {

View File

@@ -1,5 +1,6 @@
package com.ckkj.water.plan;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
@@ -76,7 +77,9 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
case R.id.btn_edit:
if(mDetailEntity != null){
Bundle bundle = new Bundle();
bundle.putSerializable("plan_entity",mPlanEntity);
bundle.putSerializable("plan_entity", mDetailEntity);
bundle.putBoolean("is_edit", true);
goTo(mContext, AddWaterPlanActivity.class,bundle);
}
break;

View File

@@ -42,6 +42,8 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
private WaterPlanWeekAdapter mWeekAdapter;
private String mPlanName = "";
public static boolean isConfigSave;
//当下是否编辑模式
private boolean mIsEditMode = false;
@Override
@@ -61,6 +63,65 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
initListener();
}
/**
* 设置编辑模式的排程数据
* @param entity 从详情页传来的排程数据
*/
public void setEditEntity(WaterPlanWeekEntity entity) {
if (entity == null) {
return;
}
mIsEditMode = true;
// 深拷贝数据到 mConfigEntity用于本地编辑
mConfigEntity = cloneEntity(entity);
// 保存远程原始数据,用于后续变化检测
mRemoteConfigEntity = entity;
isConfigSave = true;
// 初始化 UI
viewBinding.etPlanName.setText(entity.getName());
mPlanName = entity.getName();
// 更新周配置列表的显示
if (entity.getDetails() != null) {
for(WaterPlanWeekEntity.DetailsBean bean : entity.getDetails()){
bean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1));
bean.setStartTime(ZYTimeUtils.formatHHmm(bean.getStartTime()));
}
mWeekAdapter.setNewData(entity.getDetails());
}
}
/**
* 深拷贝 WaterPlanWeekEntity
*/
private WaterPlanWeekEntity cloneEntity(WaterPlanWeekEntity source) {
if (source == null) {
return null;
}
WaterPlanWeekEntity target = new WaterPlanWeekEntity();
target.setId(source.getId());
target.setName(source.getName());
target.setStatus(source.getStatus());
if (source.getDetails() != null) {
List<WaterPlanWeekEntity.DetailsBean> detailsList = new ArrayList<>();
for (WaterPlanWeekEntity.DetailsBean bean : source.getDetails()) {
WaterPlanWeekEntity.DetailsBean newBean = new WaterPlanWeekEntity.DetailsBean();
newBean.setId(bean.getId());
newBean.setWeekday(bean.getWeekday());
newBean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1));
newBean.setStatus(bean.getStatus());
newBean.setStartTime(ZYTimeUtils.formatHHmm(bean.getStartTime()));
newBean.setDurationMin(bean.getDurationMin());
detailsList.add(newBean);
}
target.setDetails(detailsList);
}
return target;
}
private void initListener() {
setClick(viewBinding.tvCommit);
mWeekAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {

View File

@@ -91,6 +91,7 @@
<string name="water_device_config">浇水配置</string>
<string name="water_device_bind">关联设备</string>
<string name="add_water_plan_title">新增排程</string>
<string name="edit_water_plan_title">Edit Plan</string>
<string name="plan_name_text">排程名称</string>
<string name="plan_period">浇水周期</string>
<string name="plan_time">浇水时长</string>

View File

@@ -92,6 +92,7 @@
<string name="water_device_config">浇水配置</string>
<string name="water_device_bind">关联设备</string>
<string name="add_water_plan_title">新增排程</string>
<string name="edit_water_plan_title">编辑排程</string>
<string name="plan_name_text">排程名称</string>
<string name="plan_name_text_empty_hint">排程名称不能为空</string>
<string name="plan_week_empty_hint">请选择排程日期</string>