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 0000000..9ef37a4 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_add_time.png differ 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 0000000..a2ae3e1 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_add_time.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_add_time.png b/app/src/main/res/mipmap-xxxhdpi/icon_add_time.png new file mode 100644 index 0000000..6427482 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_add_time.png differ