Files
Android-WaterProject/app/src/main/java/com/ckkj/water/plan/PlanDetailActivity.java
fengjignqi 0c692c77bd 优化
2026-08-19 16:07:09 +08:00

312 lines
11 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.os.Handler;
import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.WaterPlanDetailLayoutBinding;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
//import com.ckkj.water.plan.adapter.PlanDetailDeviceAdapter;
//import com.ckkj.water.plan.adapter.PlanDetailTimeAdapter;
import com.ckkj.water.plan.adapter.PlanDetailDeviceAdapter;
import com.ckkj.water.plan.adapter.PlanDetailTimeAdapter;
import com.ckkj.water.plan.adapter.PlanWeekDaysAdapter;
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.utils.manager.ThemeManager;
import com.ckkj.water.utils.show.ToastUtil;
import com.ckkj.water.utils.time.ZYTimeUtils;
import com.google.gson.Gson;
import com.gyf.immersionbar.ImmersionBar;
import java.util.ArrayList;
import java.util.List;
/**
* 排程详情页面
*/
public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBinding, WaterPlanPresenter>
implements WaterPlanContract.WaterPlanView {
//列表页面传的的,用于获取详情
private WaterPlanWeekEntity mPlanEntity;
//查询到的排程详情
private WaterPlanWeekEntity mDetailEntity;
private PlanWeekDaysAdapter mAdapter;
private PlanDetailDeviceAdapter deviceAdapter;
private List<WaterPlanWeekEntity.DetailsBean> mList = new ArrayList<>();
@Override
protected void onResume() {
super.onResume();
showLoadingDialog();
mPresenter.getPlanDetailInfo(mPlanEntity);
}
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
Bundle bundle = getIntent().getExtras();
if(bundle != null){
mPlanEntity = (WaterPlanWeekEntity) bundle.getSerializable("plan_entity");
}
String jsonContent = getString(R.string.plan_water_entity_json);
WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class);
ImmersionBar.with(this)
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
.navigationBarColor(R.color.color_gray_theme)
.titleBar(viewBinding.rlTitle)
.init();
viewBinding.includedTitle.tvTitle.setText(R.string.plan_detail_title);
initListener();
mAdapter = new PlanWeekDaysAdapter(R.layout.single_recycleview_item,mList);
viewBinding.rvPlanTime.setAdapter(mAdapter);
List<WaterDeviceEntity> deviceList = new ArrayList<>();
deviceAdapter = new PlanDetailDeviceAdapter(R.layout.plan_detail_bind_device_item,deviceList);
viewBinding.rvBindDevices.setAdapter(deviceAdapter);
}
private void initListener() {
setClick(viewBinding.includedTitle.imgBack);
setClick(viewBinding.btnEdit);
setClick(viewBinding.btnDelete);
setClick(viewBinding.switchButton);
// viewBinding.switchButton.setOnTouchListener(new View.OnTouchListener() {
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// if (event.getAction() == MotionEvent.ACTION_DOWN) {
// if (viewBinding.switchButton.isChecked()) {
// // 当前是开启状态,下一步将是关闭 -> 屏蔽动画时长设为0
// 0
// } else {
// // 当前是关闭状态,下一步将是开启 -> 开启动画(恢复默认的 250ms 或你想要的时长)
// viewBinding.switchButton.setAnimationDuration(250);
// }
// }
// // 返回 false 以便将触摸事件继续传递给 SwitchButton 内部的点击/滑动逻辑
// return false;
// }
// });
}
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.btn_edit://编辑
if(mDetailEntity != null){
Bundle bundle = new Bundle();
bundle.putSerializable("plan_entity", mDetailEntity);
bundle.putBoolean("is_edit", true);
goTo(mContext, AddWaterPlanActivity.class,bundle);
}
break;
case R.id.btn_delete://删除
showDialogtext(null, false, false, true,
getString(R.string.tip_text),
getString(R.string.delete_plan_tip),
getString(R.string.cancel_text),
getString(R.string.confirm_text),
new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick() {
mPresenter.deletePlan(mDetailEntity);
}
});
break;
case R.id.switch_button://切换状态
// 先恢复 Switch 到原始状态,避免点击时立即改变
viewBinding.switchButton.setChecked(mDetailEntity.getStatus().equals("1"));
if(mDetailEntity.getStatus().equals("1")){
showDialogtext(null, false, false, true,
getString(R.string.tip_text), getString(R.string.close_plan_dialog_tip),
getString(R.string.cancel_text), getString(R.string.confirm_text), new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
// 取消操作,恢复 Switch 状态
viewBinding.switchButton.setChecked(true);
}
@Override
public void onConfirmClick() {
// 确认关闭任务,调用接口后再更新 Switch
showLoadingDialog();
mPresenter.updatePlanStatus(mDetailEntity, "0");
}
});
}else{
// 开启任务,调用接口后再更新 Switch
mPresenter.updatePlanStatus(mDetailEntity, "1");
}
break;
}
}
/**
* 获取配成详情成功
* @param entity
*/
@Override
public void getPlanDetailInfo(WaterPlanWeekEntity entity) {
hideDialogLoading();
mDetailEntity = entity;
viewBinding.tvPlanName.setText(entity.getName());
if(entity.getStatus().equals("1")){
viewBinding.switchButton.setChecked(true);
viewBinding.tvPlanStatus.setText(getString(R.string.plan_on));
}else{
viewBinding.switchButton.setChecked(false);
viewBinding.tvPlanStatus.setText(getString(R.string.plan_off));
}
//针对周一 --- 周日的日期,只显示勾选的日期
List<WaterPlanWeekEntity.DetailsBean> list = new ArrayList<>();
for(WaterPlanWeekEntity.DetailsBean bean : entity.getDetails()){
if(bean.getStatus().equals("1")){
// 检查该日期是否有有效的时间配置
boolean hasValidTime = false;
if(bean.getTimeData() != null){
for(WaterPlanWeekEntity.TimeDataBean timeBean : bean.getTimeData()){
if(!TextUtils.isEmpty(timeBean.getStartTime())
&& timeBean.getDurationMin() != 0){
hasValidTime = true;
bean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1,mContext));
break;
}
}
}
if(hasValidTime){
list.add(bean);
}
}
}
//日期显示
if(mAdapter != null){
mAdapter.setNewData(list);
}
//设备显示
if(deviceAdapter != null){
deviceAdapter.setNewData(entity.getDeviceNos());
if(deviceAdapter.getItemCount() == 0){
viewBinding.rvBindDevices.setVisibility(View.GONE);
viewBinding.tvNoDevice.setVisibility(View.VISIBLE);
}else{
viewBinding.rvBindDevices.setVisibility(View.VISIBLE);
viewBinding.tvNoDevice.setVisibility(View.GONE);
}
}
}
/**
* 删除排程成功
* @param bean
*/
@Override
public void deletePlanSuccess(BaseBean bean) {
hideDialogLoading();
ToastUtil.showShort(mContext,getString(R.string.delete_plan_success));
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
},500);
}
@Override
public void planUnbindDeviceSuccess(BaseBean bean, int position) {
}
/**
* 更新排程状态成功
*
* @param bean
* @param status
*/
@Override
public void updatePlanStatusSuccess(BaseBean bean, String status) {
hideDialogLoading();
mDetailEntity.setStatus(status);
if(status.equals("1")){
showCenterTipDialog(R.mipmap.icon_dialog_success,getString(R.string.task_started));
viewBinding.switchButton.setChecked(true);
viewBinding.tvPlanStatus.setText(getString(R.string.plan_on));
}else{
viewBinding.switchButton.setChecked(false);
viewBinding.tvPlanStatus.setText(getString(R.string.plan_off));
}
}
@Override
public void getPlanBindDeviceList(WaterDeviceEntity bean) {
}
@Override
public void planBindDeviceSuccess(BaseBean bean) {
}
@Override
public WaterPlanPresenter createPresenter() {
return new WaterPlanPresenter(new WaterPlanImpl());
}
@Override
public int getLayoutResId(Bundle savedInstanceState) {
return 0;
}
@Override
public void showError(String message) {
hideDialogLoading();
ToastUtil.showShort(mContext,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) {
}
}