Files
Android-WaterProject/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java
fengjignqi 89df3119f8 排程部分功能优化,
解绑,删除,绑定
2026-05-30 09:01:24 +08:00

294 lines
9.6 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 static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.os.Bundle;
import android.text.TextUtils;
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);
viewBinding.tvBound.setVisibility(VISIBLE);
} else {
viewBinding.includedTitle.tvTitle.setText(R.string.add_water_plan_title);
viewBinding.tvBound.setVisibility(GONE);
}
mFragmentList.add(new WaterConfigFragment_copy());
mFragmentList.add(new PlanBoundDeviceFragment());
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_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
configFragment.setEditEntity(mEditEntity);
PlanBoundDeviceFragment boundDeviceFragment = (PlanBoundDeviceFragment) mFragmentList.get(1);
boundDeviceFragment.setEditEntity(mEditEntity);
});
}
}
private void initListener() {
setClick(viewBinding.includedTitle.imgBack);
setClick(viewBinding.tvConfig);
setClick(viewBinding.tvBound);
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.tvBound.setSelected(false);
viewBinding.viewpage.setCurrentItem(0);
break;
case R.id.tv_bound:
viewBinding.tvConfig.setSelected(false);
viewBinding.tvBound.setSelected(true);
viewBinding.tvBind.setSelected(false);
viewBinding.viewpage.setCurrentItem(1);
// 传递编辑实体给 PlanBoundDeviceFragment
PlanBoundDeviceFragment boundDeviceFragment = (PlanBoundDeviceFragment) mFragmentList.get(1);
boundDeviceFragment.setEditEntity(mEditEntity);
break;
case R.id.tv_bind:
WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
// 检查是否有未保存的数据变更
if (configFragment.hasDataChanged()) {
showDialogtext(null, false, false, true,
"提示", "数据已发生变更,是否保存?",
getString(R.string.cancel_text), "保存", new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick() {
// 更新配置
configFragment.updateConfig();
}
});
return;
}
if (!configFragment.isConfigSubmitted()) {
// 校验新增排程的配置
if (!mIsEditMode) {
if (TextUtils.isEmpty(configFragment.getPlanName())) {
ToastUtil.showShort(mContext, getString(R.string.plan_name_text_empty_hint));
return;
}
if (!configFragment.hasTimeConfig()) {
ToastUtil.showShort(mContext, "请至少配置一天的时间");
return;
}
}
showDialogtext(null, false, false, true,
"提示", "关联设备需要保存排程配置,是否继续?",
getString(R.string.cancel_text), "继续", new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick() {
configFragment.commitConfig();
}
});
return;
}
proceedToBindDevice();
break;
default:
break;
}
}
private void selectTabBind(WaterPlanWeekEntity entity) {
if (entity == null) {
entity = mIsEditMode ? mEditEntity : mNewAddEntity;
}
if (entity == null) {
ToastUtil.showShort(mContext, "请先保存排程");
return;
}
viewBinding.tvConfig.setSelected(false);
viewBinding.tvBound.setSelected(false);
viewBinding.tvBind.setSelected(true);
viewBinding.viewpage.setCurrentItem(2);
// 传递排程数据给 BindDeviceFragment
BindDeviceFragment bindDeviceFragment = (BindDeviceFragment) mFragmentList.get(2);
bindDeviceFragment.setPlanEntity(entity);
}
/**
* 切换到绑定设备页面
*/
private void proceedToBindDevice() {
WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
WaterPlanWeekEntity entity = mIsEditMode ? mEditEntity : mNewAddEntity;
if (entity == null) {
entity = configFragment.getRemoteEntity();
}
selectTabBind(entity);
}
public void onConfigSaved(WaterPlanWeekEntity entity) {
mNewAddEntity = 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) {
}
@Override
public void planUnbindDeviceSuccess(BaseBean bean, int position) {
}
}