From 401d1892bb63783c242b5f8bbc6f867bfa5de43d Mon Sep 17 00:00:00 2001 From: fengjignqi <15192412330@163.com> Date: Thu, 28 May 2026 12:00:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E7=A8=8B=E9=87=8D=E5=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../ckkj/water/plan/AddWaterPlanActivity.java | 11 +- .../ckkj/water/plan/BindDeviceFragment.java | 4 + .../ckkj/water/plan/PlanDetailActivity.java | 19 ++ .../water/plan/WaterConfigFragment_copy.java | 195 ++++++++++++++++++ .../adapter/WaterPlanTimeDataAdapter.java | 47 +++++ .../adapter/WaterPlanWeekAdapter_copy.java | 88 ++++++++ .../plan/entity/WaterPlanWeekEntity.java | 10 + .../layout/include_plan_time_item_layout.xml | 103 +++++++++ .../water_config_fragment_layout_copy.xml | 145 +++++++++++++ .../main/res/mipmap-xhdpi/icon_add_time.png | Bin 0 -> 1102 bytes .../main/res/mipmap-xxhdpi/icon_add_time.png | Bin 0 -> 2500 bytes .../main/res/mipmap-xxxhdpi/icon_add_time.png | Bin 0 -> 1259 bytes 13 files changed, 621 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/ckkj/water/plan/WaterConfigFragment_copy.java create mode 100644 app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanTimeDataAdapter.java create mode 100644 app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanWeekAdapter_copy.java create mode 100644 app/src/main/res/layout/include_plan_time_item_layout.xml create mode 100644 app/src/main/res/layout/water_config_fragment_layout_copy.xml create mode 100644 app/src/main/res/mipmap-xhdpi/icon_add_time.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_add_time.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/icon_add_time.png diff --git a/app/build.gradle b/app/build.gradle index 7786d6a..ca9eab5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -159,7 +159,7 @@ dependencies { //鲁班图片压缩 implementation 'top.zibin:Luban:1.1.8' //带有侧滑功能的recyclerview -// implementation 'com.yanzhenjie.recyclerview:x:1.3.2' + implementation 'com.yanzhenjie.recyclerview:x:1.3.2' implementation 'com.github.luqiming666:SwipeRecyclerView:1.4.8' //Activity与Fragmen实现沉浸式状态栏 implementation 'com.github.tangguna:immersion:1.0.1' diff --git a/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java b/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java index cf41c63..9837a0a 100644 --- a/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java +++ b/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java @@ -129,7 +129,6 @@ public class AddWaterPlanActivity extends BaseActivity selected = new ArrayList<>(); for(WaterDeviceEntity.DeviceListBean bean : mDeviceList){ diff --git a/app/src/main/java/com/ckkj/water/plan/PlanDetailActivity.java b/app/src/main/java/com/ckkj/water/plan/PlanDetailActivity.java index 5f1b394..71ae0df 100644 --- a/app/src/main/java/com/ckkj/water/plan/PlanDetailActivity.java +++ b/app/src/main/java/com/ckkj/water/plan/PlanDetailActivity.java @@ -2,6 +2,7 @@ package com.ckkj.water.plan; import android.os.Bundle; import android.os.Handler; +import android.view.MotionEvent; import android.view.View; import com.ckkj.water.R; @@ -73,6 +74,22 @@ public class PlanDetailActivity extends BaseActivity 屏蔽动画(时长设为0) +// viewBinding.switchButton.setAnimationDuration(0); +// } else { +// // 当前是关闭状态,下一步将是开启 -> 开启动画(恢复默认的 250ms 或你想要的时长) +// viewBinding.switchButton.setAnimationDuration(250); +// } +// } +// // 返回 false 以便将触摸事件继续传递给 SwitchButton 内部的点击/滑动逻辑 +// return false; +// } +// }); } private void setClick(View view) { @@ -136,6 +153,8 @@ public class PlanDetailActivity extends BaseActivity + implements WaterPlanContract.WaterPlanView { + private List weekList = new ArrayList<>(); + private List timeList = new ArrayList<>(); + private WaterPlanWeekAdapter_copy mWeekAdapter; + private WaterPlanTimeDataAdapter mTimeAdapter; + + + @Override + public void initData(Bundle state) { + List list = new ArrayList<>(); + for(int i = 0; i < 7; i++){ + WaterPlanWeekEntity.DetailsBean bean = new WaterPlanWeekEntity.DetailsBean(); + WaterPlanWeekEntity.TimeDataBean timeData = new WaterPlanWeekEntity.TimeDataBean(); + List timeDataList = new ArrayList<>(); + timeDataList.add(timeData); + bean.setTimeData(timeDataList); + bean.setWeekday(i + 1); + bean.setStatus("0"); + bean.setWeekName(ZYTimeUtils.getWeekName(i)); + list.add(bean); + } + weekList = list; + //顶部周一、周二。。。。。 + mWeekAdapter = new WaterPlanWeekAdapter_copy(mContext, R.layout.plan_period_item,list); + viewBinding.rvWeek.setAdapter(mWeekAdapter); + //周期对应的 时间配置 + mTimeAdapter = new WaterPlanTimeDataAdapter(mContext,R.layout.include_plan_time_item_layout,timeList); + viewBinding.rvTimes.setAdapter(mTimeAdapter); + initListener(); + } + + private void initListener() { + setClick(viewBinding.tvCommit); +// viewBinding.etPlanTime.addTextChangedListener(new TextWatcher() { +// @Override +// public void beforeTextChanged(CharSequence s, int start, int count, int after) { +// } +// +// @Override +// public void onTextChanged(CharSequence s, int start, int before, int count) { +// } +// +// @Override +// public void afterTextChanged(Editable s) { +// if(weekList != null){ +// String time = s.toString(); +// if(TextUtils.isEmpty(time)){ +// weekList.get(0).getWashCycleList().get(mWeekAdapter.getmPos()).setDuration(""); +// }else{ +// weekList.get(0).getWashCycleList().get(mWeekAdapter.getmPos()).setDuration(time); +// } +// } +// } +// }); + + mWeekAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + mWeekAdapter.setSelPos(position); + } + }); + } + + private void setClick(View view) { + view.setOnClickListener(this::onClick); + } + + public void onClick(View v){ + switch (v.getId()){ + case R.id.tv_select_time: + boolean times[] = {false, false, false, true, true, false}; + //时间选择器 +// TimePickerView pvTime = new TimePickerBuilder(mContext, new OnTimeSelectListener() { +// @Override +// public void onTimeSelect(Date date, View v) { +// viewBinding.tvSelectTime.setText(ZYTimeUtils.getStrTimeData_H_M(date)); +// if(weekList != null){ +// String startTime = ZYTimeUtils.getStrTimeData_H_M(date).trim(); +// weekList.get(0).getWashCycleList().get(mWeekAdapter.getmPos()).setTime(startTime); +// } +// } +// }).setType(times) +// .setCancelColor(mContext.getColor(R.color.color_999999)) +// .setSubmitColor(mContext.getColor(R.color.color_zhu)) +// .setTextColorCenter(mContext.getColor(R.color.color_zhu)) +// .build(); +// pvTime.show(); + break; + + case R.id.tv_commit: + break; + } + } + + +// private List getSelectedDevices() { +// if (getActivity() instanceof AddWaterPlanActivity) { +// return ((AddWaterPlanActivity) getActivity()).getSelectedDevices(); +// } +// return new ArrayList<>(); +// } + + @Override + public WaterPlanPresenter createPresenter() { + return new WaterPlanPresenter(new WaterPlanImpl()); + } + + @Override + public void onNetChange(int netModel) { + + } + + @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) { + + } +} diff --git a/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanTimeDataAdapter.java b/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanTimeDataAdapter.java new file mode 100644 index 0000000..a21dfc3 --- /dev/null +++ b/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanTimeDataAdapter.java @@ -0,0 +1,47 @@ +package com.ckkj.water.plan.adapter; + +import android.content.Context; +import android.text.TextUtils; +import android.widget.CheckBox; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; +import com.ckkj.water.R; +import com.ckkj.water.plan.entity.WaterPlanWeekEntity; + +import java.util.List; + +/** + * @author fengxiaoyang + * @date 2026/5/28 + * @description TODO: 描述该类的作用 + */ +public class WaterPlanTimeDataAdapter extends BaseQuickAdapter { + private Context mContext; + public WaterPlanTimeDataAdapter(Context context,int layoutResId, @Nullable List data) { + super(layoutResId, data); + mContext = context; + } + + @Override + protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.TimeDataBean item) { + TextView tvStartTime = helper.getView(R.id.tv_select_time); + TextView tvPlanDuration = helper.getView(R.id.tv_plan_duration); + + if(!TextUtils.isEmpty(item.getStartTime())){ + helper.setText(R.id.tv_select_time, item.getStartTime()); + }else{ + helper.setText(R.id.tv_select_time,""); + tvStartTime.setHint(mContext.getString(R.string.select_water_time)); + } + if(item.getDurationMin() != 0){ + helper.setText(R.id.tv_plan_duration,item.getDurationMin() + ""); + }else{ + helper.setText(R.id.tv_plan_duration,""); + tvPlanDuration.setHint(mContext.getString(R.string.input_water_plan_time)); + } + } +} diff --git a/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanWeekAdapter_copy.java b/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanWeekAdapter_copy.java new file mode 100644 index 0000000..61d6c77 --- /dev/null +++ b/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanWeekAdapter_copy.java @@ -0,0 +1,88 @@ +package com.ckkj.water.plan.adapter; + +import android.content.Context; +import android.text.TextUtils; +import android.widget.CheckBox; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; +import com.ckkj.water.R; +import com.ckkj.water.plan.entity.WaterPlanWeekEntity; + +import java.util.ArrayList; +import java.util.List; + +public class WaterPlanWeekAdapter_copy extends BaseQuickAdapter { + private List mList = new ArrayList<>(); + private Context mContext; + + private int mPos = 0; + public WaterPlanWeekAdapter_copy(Context context, int layoutResId, @Nullable List data) { + super(layoutResId, data); + this.mContext = context; + this.mList = data; + } + + @Override + protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DetailsBean item) { + TextView tvStartTime = helper.getView(R.id.tv_select_time); + CheckBox checkBox = helper.getView(R.id.checkbox); + TextView tvPlanDuration = helper.getView(R.id.tv_plan_duration); + + + helper.setText(R.id.tv_week_name,item.getWeekName()); + + if(!TextUtils.isEmpty(item.getStartTime())){ + helper.setText(R.id.tv_select_time, item.getStartTime()); + }else{ + helper.setText(R.id.tv_select_time,""); + tvStartTime.setHint(mContext.getString(R.string.select_water_time)); + } + if(item.getDurationMin() != 0){ + helper.setText(R.id.tv_plan_duration,item.getDurationMin() + ""); + }else{ + helper.setText(R.id.tv_plan_duration,""); + tvPlanDuration.setHint(mContext.getString(R.string.input_water_plan_time)); + } + + if(item.getStatus().equals("1")){ + checkBox.setChecked(true); + }else{ + checkBox.setChecked(false); + } + + helper.addOnClickListener(R.id.linear_week); + helper.addOnClickListener(R.id.checkbox); + helper.addOnClickListener(R.id.tv_select_time); + helper.addOnClickListener(R.id.tv_plan_duration); + +// LinearLayout linearItem = helper.getView(R.id.linear_item); +// View viewStatus = helper.getView(R.id.view_status); +// if(helper.getLayoutPosition() == mPos){ +// linearItem.setBackground(mContext.getResources().getDrawable(R.drawable.shape_water_period_sel_bg)); +// viewStatus.setVisibility(VISIBLE); +// viewStatus.setBackground(mContext.getResources().getDrawable(R.drawable.shape_green_circle)); +// }else{ +// linearItem.setBackground(null); +// if(!TextUtils.isEmpty(item.getTime()) && !TextUtils.isEmpty(item.getDuration())){ +// viewStatus.setVisibility(VISIBLE); +// viewStatus.setBackground(mContext.getResources().getDrawable(R.drawable.shape_yellow_circle)); +// }else{ +// viewStatus.setVisibility(INVISIBLE); +// viewStatus.setBackground(null); +// } +// } + } + + public void setSelPos(int position) { + this.mPos = position; + notifyDataSetChanged(); + } + + public int getmPos() { + return mPos; + } +} diff --git a/app/src/main/java/com/ckkj/water/plan/entity/WaterPlanWeekEntity.java b/app/src/main/java/com/ckkj/water/plan/entity/WaterPlanWeekEntity.java index 6b4a489..a78a2ff 100644 --- a/app/src/main/java/com/ckkj/water/plan/entity/WaterPlanWeekEntity.java +++ b/app/src/main/java/com/ckkj/water/plan/entity/WaterPlanWeekEntity.java @@ -29,6 +29,8 @@ public class WaterPlanWeekEntity implements Serializable { private String status = "1"; private List details; + + @NoArgsConstructor @Data public static class DetailsBean implements Serializable{ @@ -62,5 +64,13 @@ public class WaterPlanWeekEntity implements Serializable { private Object zones; private String triggerType = "0"; private String status = "1"; + private List timeData; + } + + @NoArgsConstructor + @Data + public static class TimeDataBean implements Serializable{ + private String startTime = ""; + private int durationMin = 0; } } diff --git a/app/src/main/res/layout/include_plan_time_item_layout.xml b/app/src/main/res/layout/include_plan_time_item_layout.xml new file mode 100644 index 0000000..1ec8e2a --- /dev/null +++ b/app/src/main/res/layout/include_plan_time_item_layout.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/water_config_fragment_layout_copy.xml b/app/src/main/res/layout/water_config_fragment_layout_copy.xml new file mode 100644 index 0000000..3a5f12b --- /dev/null +++ b/app/src/main/res/layout/water_config_fragment_layout_copy.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xhdpi/icon_add_time.png b/app/src/main/res/mipmap-xhdpi/icon_add_time.png new file mode 100644 index 0000000000000000000000000000000000000000..9ef37a44d6f1e1c66b028e01aa570a618d75ada6 GIT binary patch literal 1102 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wF4y>)dGA%T!CDM{S9C=m0^EB!~U5J z`=>IT0{&ep5mplJ|tz2WZ9T-qvB|(0{ z3@jWx0wNL;GBWZC%IexW`Ud9K_Rj9^-roMf;nDHQ>FL?|<<-^o_08?w{gbE9p1*kc z>h+s9Z{NND@bS~MBZ)au}Up5eElQmbl zkTmOBtHX(lSEfwaqN-cy=~Q(@t?*5*<*A!RumAt&+-E51c05bf?&0_7v?t#?-BwR6 zdup+>=;^Qekj#=_$1k2X@qTpqVO+uXjLUoOygUCuKlSmuU9#od?K~RSuPDBK$8JWG z&%&D~cicHwnCx=?UN6AtbW^YJVE1{3l{>sX#`iO<&vU$O@8RgK?=|b6^@5crH}%yn zWWUvA%gb<3KA~&=VPOT$LqgjcRv3$m&({=XXkYPHlrdJ9WkLP}{*_i!-Zf8bJN3uX zkl7)Y@rA^%!y$5>M~{dw9Na&*A&IMX=Bv-!?f30BoZ;mB^M9SuH&4S99Yz^V#-5GY zS0z5iX{3fR#40Y}4Py|VtkcMNpo_y`GfM{7pYVf13*7mFR3038u*8M&8JjvImqOIj zY&G|(KmL7ZCTCZ63 z_h*%3&&GIe`}Ozcf8JMlf_+Y8bc*9q<4tT4kD0&aG8#>Gcb2Z&xlh+U z*t#?v4Yr?~)f0}+VW@pjOtNGrUf1+P6 RQIQ7~44$rjF6*2UngG@k5B2~6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/icon_add_time.png b/app/src/main/res/mipmap-xxhdpi/icon_add_time.png new file mode 100644 index 0000000000000000000000000000000000000000..a2ae3e152eabefa6d098c7f49863a2335c1c4889 GIT binary patch literal 2500 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 VgO(PYQ(6E3002ovPDHLkV1jJUR%!qM literal 0 HcmV?d00001