From 7aed064ddbb00f4add63ee36c06417784bd96940 Mon Sep 17 00:00:00 2001 From: fengjignqi <15192412330@163.com> Date: Sat, 30 May 2026 15:53:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E7=A8=8B=E9=83=A8=E5=88=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96=EF=BC=8C=20=E8=A7=A3=E7=BB=91?= =?UTF-8?q?=EF=BC=8C=E5=88=A0=E9=99=A4=EF=BC=8C=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ckkj/water/plan/PlanDetailActivity.java | 73 ++++++++++++------- .../plan/adapter/PlanDetailTimeAdapter.java | 12 ++- .../plan/adapter/PlanWeekDaysAdapter.java | 50 +++++++++++++ .../plan/entity/WaterPlanWeekEntity.java | 1 + .../layout/plan_detail_bind_device_item.xml | 4 +- .../main/res/layout/plan_detail_time_item.xml | 23 ++---- .../res/layout/single_recycleview_item.xml | 25 +++++++ .../res/layout/water_plan_detail_layout.xml | 9 ++- 8 files changed, 144 insertions(+), 53 deletions(-) create mode 100644 app/src/main/java/com/ckkj/water/plan/adapter/PlanWeekDaysAdapter.java create mode 100644 app/src/main/res/layout/single_recycleview_item.xml 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 42dba21..0b4502e 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.text.TextUtils; import android.view.MotionEvent; import android.view.View; @@ -15,11 +16,13 @@ import com.ckkj.water.network.BaseBean; //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.show.ToastUtil; +import com.ckkj.water.utils.time.ZYTimeUtils; import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; @@ -35,7 +38,7 @@ public class PlanDetailActivity extends BaseActivity mList = new ArrayList<>(); @@ -62,7 +65,7 @@ public class PlanDetailActivity extends BaseActivity deviceList = new ArrayList<>(); deviceAdapter = new PlanDetailDeviceAdapter(R.layout.plan_detail_bind_device_item,deviceList); @@ -80,7 +83,7 @@ public class PlanDetailActivity extends BaseActivity 屏蔽动画(时长设为0) -// viewBinding.switchButton.setAnimationDuration(0); +// 0 // } else { // // 当前是关闭状态,下一步将是开启 -> 开启动画(恢复默认的 250ms 或你想要的时长) // viewBinding.switchButton.setAnimationDuration(250); @@ -125,31 +128,31 @@ public class PlanDetailActivity extends BaseActivity list = new ArrayList<>(); for(WaterPlanWeekEntity.DetailsBean bean : entity.getDetails()){ if(bean.getStatus().equals("1")){ - list.add(bean); + // 检查该日期是否有有效的时间配置 + 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)); + break; + } + } + } + if(hasValidTime){ + list.add(bean); + } } } //日期显示 diff --git a/app/src/main/java/com/ckkj/water/plan/adapter/PlanDetailTimeAdapter.java b/app/src/main/java/com/ckkj/water/plan/adapter/PlanDetailTimeAdapter.java index 9bfa80b..69ea845 100644 --- a/app/src/main/java/com/ckkj/water/plan/adapter/PlanDetailTimeAdapter.java +++ b/app/src/main/java/com/ckkj/water/plan/adapter/PlanDetailTimeAdapter.java @@ -1,5 +1,10 @@ package com.ckkj.water.plan.adapter; +import static android.view.View.INVISIBLE; +import static android.view.View.VISIBLE; + +import android.widget.TextView; + import androidx.annotation.Nullable; import com.chad.library.adapter.base.BaseQuickAdapter; @@ -10,15 +15,14 @@ import com.ckkj.water.utils.time.ZYTimeUtils; import java.util.List; -public class PlanDetailTimeAdapter extends BaseQuickAdapter { +public class PlanDetailTimeAdapter extends BaseQuickAdapter { - public PlanDetailTimeAdapter(int layoutResId, @Nullable List data) { + public PlanDetailTimeAdapter(int layoutResId, @Nullable List data) { super(layoutResId, data); } @Override - protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DetailsBean item) { - helper.setText(R.id.tv_week, ZYTimeUtils.getWeekName(item.getWeekday() - 1)); + protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.TimeDataBean item) { helper.setText(R.id.tv_start_time,ZYTimeUtils.formatHHmm(item.getStartTime())); helper.setText(R.id.tv_duration,item.getDurationMin() + "min"); } diff --git a/app/src/main/java/com/ckkj/water/plan/adapter/PlanWeekDaysAdapter.java b/app/src/main/java/com/ckkj/water/plan/adapter/PlanWeekDaysAdapter.java new file mode 100644 index 0000000..e62d505 --- /dev/null +++ b/app/src/main/java/com/ckkj/water/plan/adapter/PlanWeekDaysAdapter.java @@ -0,0 +1,50 @@ +package com.ckkj.water.plan.adapter; + +import android.graphics.Rect; +import android.view.View; + +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; + +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; + +public class PlanWeekDaysAdapter extends BaseQuickAdapter { + + public PlanWeekDaysAdapter(int layoutResId, @Nullable List data) { + super(layoutResId, data); + } + + @Override + protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DetailsBean item) { + helper.setText(R.id.tv_week_name, item.getWeekName()); + RecyclerView rvWeekDatas = helper.getView(R.id.rv_plan_detail_times); + PlanDetailTimeAdapter adapter = new PlanDetailTimeAdapter(R.layout.plan_detail_time_item, item.getTimeData()); + rvWeekDatas.setAdapter(adapter); + } + + @Override + public void onAttachedToRecyclerView(RecyclerView recyclerView) { + super.onAttachedToRecyclerView(recyclerView); + // 添加透明色分割线,高度10px + recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() { + @Override + public void getItemOffsets(Rect outRect, View view, + RecyclerView parent, RecyclerView.State state) { + int position = parent.getChildAdapterPosition(view); + if (position > 0) { + outRect.top = (int) (10 * view.getContext().getResources().getDisplayMetrics().density); + } + } + + @Override + public void onDraw(android.graphics.Canvas c, RecyclerView parent, RecyclerView.State state) { + // 不绘制任何内容,保持透明 + } + }); + } +} 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 a78a2ff..2ee902d 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 @@ -72,5 +72,6 @@ public class WaterPlanWeekEntity implements Serializable { public static class TimeDataBean implements Serializable{ private String startTime = ""; private int durationMin = 0; + private String weekName; } } diff --git a/app/src/main/res/layout/plan_detail_bind_device_item.xml b/app/src/main/res/layout/plan_detail_bind_device_item.xml index 68908b0..6ec00cb 100644 --- a/app/src/main/res/layout/plan_detail_bind_device_item.xml +++ b/app/src/main/res/layout/plan_detail_bind_device_item.xml @@ -2,7 +2,8 @@ + android:layout_height="wrap_content" + android:gravity="center_vertical"> - \ No newline at end of file diff --git a/app/src/main/res/layout/plan_detail_time_item.xml b/app/src/main/res/layout/plan_detail_time_item.xml index d0657b2..27853b8 100644 --- a/app/src/main/res/layout/plan_detail_time_item.xml +++ b/app/src/main/res/layout/plan_detail_time_item.xml @@ -10,41 +10,34 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:layout_marginBottom="@dimen/dp_15"> + android:layout_marginBottom="@dimen/dp_10"> - + android:layout_weight="1"/> diff --git a/app/src/main/res/layout/single_recycleview_item.xml b/app/src/main/res/layout/single_recycleview_item.xml new file mode 100644 index 0000000..46bb22c --- /dev/null +++ b/app/src/main/res/layout/single_recycleview_item.xml @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/water_plan_detail_layout.xml b/app/src/main/res/layout/water_plan_detail_layout.xml index 48d50c7..c62ad55 100644 --- a/app/src/main/res/layout/water_plan_detail_layout.xml +++ b/app/src/main/res/layout/water_plan_detail_layout.xml @@ -76,8 +76,8 @@ android:id="@+id/rv_plan_time" android:layout_width="match_parent" android:layout_height="wrap_content" - tools:listitem="@layout/plan_detail_time_item" - tools:itemCount="5" + tools:listitem="@layout/single_recycleview_item" + tools:itemCount="3" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/> @@ -93,7 +93,7 @@ @@ -102,7 +102,8 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:orientation="vertical"> + android:orientation="vertical" + android:paddingLeft="@dimen/dp_20">