diff --git a/app/src/main/java/com/ckkj/water/base/BaseFragment.java b/app/src/main/java/com/ckkj/water/base/BaseFragment.java index 072de83..c1db223 100644 --- a/app/src/main/java/com/ckkj/water/base/BaseFragment.java +++ b/app/src/main/java/com/ckkj/water/base/BaseFragment.java @@ -11,6 +11,8 @@ import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; +import android.text.InputFilter; +import android.text.InputType; import android.text.TextUtils; import android.util.Log; import android.view.Gravity; @@ -20,6 +22,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; +import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -30,6 +33,7 @@ import androidx.core.app.ActivityCompat; import androidx.fragment.app.Fragment; import androidx.viewbinding.ViewBinding; +import com.ckkj.water.utils.show.ToastUtil; import com.esafirm.imagepicker.features.ImagePicker; import com.ckkj.water.AppConfig; import com.ckkj.water.ConstantUtil; @@ -70,6 +74,12 @@ public abstract class BaseFragment e protected static final int REQUEST_EVENT_CODE_10002 = 10002; protected static final int REQUEST_EVENT_CODE_10003 = 10003; + public static final int INPUT_TYPE_NORMAL = 0; // 默认 + public static final int INPUT_TYPE_NUMBER = 1; // 数字 + public static final int INPUT_TYPE_LETTER = 2; // 英文字母 + public static final int INPUT_TYPE_CHINESE = 3; // 中文 + public static final int INPUT_TYPE_NUMBER_LETTER = 4;//数字+字母 + private static final AtomicBoolean isDialogShown = new AtomicBoolean(false); // 使用 AtomicBoolean 保证线程安全 @@ -860,6 +870,193 @@ public abstract class BaseFragment e }); } + + /** + * + + * + * @param title 标题 + * @param hint 提示内容2 + * @param content 内容 + * @param touchOutsideCancel 弹窗类型 + * @param cancelText 取消 文案 + * @param confirmText 确定 文案 + * @param click + */ + public void showEditDialog(String title, + String hint, + String content, + boolean touchOutsideCancel, + String cancelText, + String confirmText, + int inputType, + final BaseActivity.OnDialogClick click) { + + View view = getLayoutInflater().inflate( + R.layout.public_dialog_input_text, + null + ); + + EditText editText = view.findViewById(R.id.et_input); + + //设置输入类型 + setEditInputType(editText,inputType); + + if(TextUtils.isEmpty(content)){ + editText.setHint(hint); + }else{ + editText.setText(content); + editText.setSelection(content.length()); + } + + setTextView(R.id.tv_title,title,view); + + if (!TextUtils.isEmpty(confirmText) + && !TextUtils.isEmpty(cancelText)) { + + ((TextView)view.findViewById(R.id.btnLeft)) + .setText(cancelText); + + ((TextView)view.findViewById(R.id.btnRight)) + .setText(confirmText); + } + + view.findViewById(R.id.btnLeft) + .setOnClickListener(v -> { + + if(dialog!=null&&dialog.isShowing()) + dialog.dismiss(); + + if(click!=null) + click.onCancelClick(); + + }); + + view.findViewById(R.id.btnRight) + .setOnClickListener(v -> { + + String value=editText.getText() + .toString() + .trim(); + + if(TextUtils.isEmpty(value)){ + ToastUtil.showShort(mContext,hint); + return; + } + + if(dialog!=null&&dialog.isShowing()) + dialog.dismiss(); + + if(click!=null) + click.onConfirmClisk(value); + + }); + + AlertDialog.Builder builder; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + builder = new AlertDialog.Builder( + mContext, + AlertDialog.THEME_HOLO_LIGHT + ); + } else { + builder = new AlertDialog.Builder(mContext); + } + + builder.setInverseBackgroundForced(true); + builder.setView(view); + + dialog = builder.show(); + + dialog.setCanceledOnTouchOutside( + touchOutsideCancel + ); + + try { + ((View)dialog.getWindow() + .getDecorView() + .findViewById(R.id.contentDialog) + .getParent() + .getParent()) + .setBackgroundColor( + getResources().getColor( + R.color.transparent + ) + ); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + private void setEditInputType(EditText editText,int type){ + + switch (type){ + + case INPUT_TYPE_NUMBER: + //纯数字键盘 + editText.setInputType( + InputType.TYPE_CLASS_NUMBER + ); + break; + + case INPUT_TYPE_LETTER: + + //只能输入字母 + editText.setFilters( + new InputFilter[]{ + (source,start,end,dest,dstart,dend)->{ + + if(source.toString() + .matches("[a-zA-Z]+")){ + return source; + } + return ""; + } + }); + break; + + case INPUT_TYPE_CHINESE: + + //只能输入中文 + editText.setFilters( + new InputFilter[]{ + (source,start,end,dest,dstart,dend)->{ + + if(source.toString() + .matches("[\\u4e00-\\u9fa5]+")){ + return source; + } + return ""; + } + }); + break; + + case INPUT_TYPE_NUMBER_LETTER: + + //数字+字母 + editText.setFilters( + new InputFilter[]{ + (source,start,end,dest,dstart,dend)->{ + + if(source.toString() + .matches("[a-zA-Z0-9]+")){ + return source; + } + return ""; + } + }); + break; + + default: + editText.setInputType( + InputType.TYPE_CLASS_TEXT + ); + break; + } + + } + + /** * 权限请求结果回调 */ 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 e8effba..139701a 100644 --- a/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java +++ b/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java @@ -26,15 +26,15 @@ public class AddWaterPlanActivity extends BaseActivity mFragmentList = new ArrayList<>(); - private List mSelectedDevices = new ArrayList<>(); - - public List getSelectedDevices() { - return mSelectedDevices; - } - - public void setSelectedDevices(List selectedDevices) { - this.mSelectedDevices = selectedDevices; - } +// private List mSelectedDevices = new ArrayList<>(); +// +// public List getSelectedDevices() { +// return mSelectedDevices; +// } +// +// public void setSelectedDevices(List selectedDevices) { +// this.mSelectedDevices = selectedDevices; +// } @Override public WaterPlanPresenter createPresenter() { diff --git a/app/src/main/java/com/ckkj/water/plan/BindDeviceFragment.java b/app/src/main/java/com/ckkj/water/plan/BindDeviceFragment.java index 428f318..b387e8c 100644 --- a/app/src/main/java/com/ckkj/water/plan/BindDeviceFragment.java +++ b/app/src/main/java/com/ckkj/water/plan/BindDeviceFragment.java @@ -11,7 +11,7 @@ import com.ckkj.water.base.BaseFragment; import com.ckkj.water.databinding.PlanBindDeviceLayoutBinding; import com.ckkj.water.main.activity.MainActivity; import com.ckkj.water.network.BaseBean; -import com.ckkj.water.plan.adapter.BindDeviceAdapter; +//import com.ckkj.water.plan.adapter.BindDeviceAdapter; import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.mvp.WaterPlanContract; import com.ckkj.water.plan.mvp.WaterPlanImpl; @@ -29,35 +29,35 @@ public class BindDeviceFragment extends BaseFragment weekList = new ArrayList<>(); - private BindDeviceAdapter mAdapter; +// private BindDeviceAdapter mAdapter; @Override public void initData(Bundle state) { String jsonContent = getString(R.string.plan_water_entity_json); WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class); weekList.add(entity); - mAdapter = new BindDeviceAdapter(mContext,R.layout.plan_bind_device_item,weekList.get(0).getDeviceList()); - viewBinding.rvDevices.setAdapter(mAdapter); - mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - mAdapter.toggleSelection(position); - syncSelectedDevices(); - } - }); +// mAdapter = new BindDeviceAdapter(mContext,R.layout.plan_bind_device_item,weekList.get(0).getDeviceList()); +// viewBinding.rvDevices.setAdapter(mAdapter); +// mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { +// @Override +// public void onItemClick(BaseQuickAdapter adapter, View view, int position) { +// mAdapter.toggleSelection(position); +// syncSelectedDevices(); +// } +// }); } private void syncSelectedDevices() { - Set selectedPositions = mAdapter.getSelectedPositions(); - List selected = new ArrayList<>(); - for (int pos : selectedPositions) { - if (pos >= 0 && pos < weekList.get(0).getDeviceList().size()) { - selected.add(weekList.get(0).getDeviceList().get(pos)); - } - } - if (getActivity() instanceof AddWaterPlanActivity) { - ((AddWaterPlanActivity) getActivity()).setSelectedDevices(selected); - } +// Set selectedPositions = mAdapter.getSelectedPositions(); +// List selected = new ArrayList<>(); +// for (int pos : selectedPositions) { +// if (pos >= 0 && pos < weekList.get(0).getDeviceList().size()) { +// selected.add(weekList.get(0).getDeviceList().get(pos)); +// } +// } +// if (getActivity() instanceof AddWaterPlanActivity) { +// ((AddWaterPlanActivity) getActivity()).setSelectedDevices(selected); +// } } @Override 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 7bed622..8cad2ec 100644 --- a/app/src/main/java/com/ckkj/water/plan/PlanDetailActivity.java +++ b/app/src/main/java/com/ckkj/water/plan/PlanDetailActivity.java @@ -7,8 +7,8 @@ import com.ckkj.water.R; import com.ckkj.water.base.BaseActivity; import com.ckkj.water.databinding.WaterPlanDetailLayoutBinding; 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.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.mvp.WaterPlanContract; import com.ckkj.water.plan.mvp.WaterPlanImpl; @@ -35,10 +35,10 @@ public class PlanDetailActivity extends BaseActivity implements WaterPlanContract.WaterPlanView { - private List weekList = new ArrayList<>(); + private List mConfigList = new ArrayList<>(); + + private WaterPlanWeekEntity mConfigEntity; private WaterPlanWeekAdapter mWeekAdapter; @Override public void initData(Bundle state) { - String jsonContent = getString(R.string.plan_water_entity_json); - WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class); - weekList.add(entity); - mWeekAdapter = new WaterPlanWeekAdapter(mContext, R.layout.plan_period_item,weekList.get(0).getWashCycleList()); - viewBinding.rvWeek.setAdapter(mWeekAdapter); + mConfigEntity = new WaterPlanWeekEntity(); + List list = new ArrayList<>(); + for(int i = 0; i < 7; i++){ + WaterPlanWeekEntity.DetailsBean bean = new WaterPlanWeekEntity.DetailsBean(); + bean.setWeekday(i); + bean.setStatus("0"); + bean.setWeekName(ZYTimeUtils.getWeekName(i)); + list.add(bean); + } + mConfigEntity.setDetails(list); + mWeekAdapter = new WaterPlanWeekAdapter(mContext,R.layout.plan_week_config_item, mConfigEntity.getDetails()); + viewBinding.rvWeekConfig.setAdapter(mWeekAdapter); initListener(); } private void initListener() { setClick(viewBinding.tvCommit); - setClick(viewBinding.tvSelectTime); - viewBinding.etPlanTime.addTextChangedListener(new TextWatcher() { +// + mWeekAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + switch (view.getId()){ + case R.id.linear_week://选中 + case R.id.checkbox: + if(mConfigEntity.getDetails().get(position).getStatus().equals("1")){ + mConfigEntity.getDetails().get(position).setStatus("0"); + }else{ + mConfigEntity.getDetails().get(position).setStatus("1"); + } + mWeekAdapter.notifyItemChanged(position); + break; - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - } + case R.id.tv_select_time: + selectStartTime(position); + break; - @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); + case R.id.tv_plan_duration: + inputDuration(position); + break; + } + } + }); + } + + private void inputDuration(int position) { + showEditDialog(getString(R.string.device_work_times_title), + getString(R.string.input_water_plan_time), + mConfigEntity.getDetails().get(position).getDurationMin() == 0 ? + "" : mConfigEntity.getDetails().get(position).getDurationMin() + "", + true, + getString(R.string.cancel_text), + getString(R.string.confirm_text), + BaseFragment.INPUT_TYPE_NUMBER, + new BaseActivity.OnDialogClick() { + @Override + public void onCancelClick() { } - } - } - }); - mWeekAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onConfirmClisk() { + } + + @Override + public void onConfirmClisk(String content) { + if(Integer.parseInt(content) <= 0){ + ToastUtil.showShort(mContext, getString(R.string.input_water_plan_time_error)); + return; + } + mConfigEntity.getDetails().get(position).setDurationMin(Integer.parseInt(content)); + mWeekAdapter.notifyItemChanged(position); + } + + @Override + public void onView1Click() { + + } + }); + } + + private void selectStartTime(int position) { + boolean times[] = {false, false, false, true, true, false}; + //时间选择器 + TimePickerView pvTime = new TimePickerBuilder(mContext, new OnTimeSelectListener() { @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - mWeekAdapter.setSelPos(position); - String planStartTime = weekList.get(0).getWashCycleList().get(position).getTime(); - String planTime = weekList.get(0).getWashCycleList().get(position).getDuration(); - - if(TextUtils.isEmpty(planStartTime)){ - viewBinding.tvSelectTime.setHint(getString(R.string.select_water_time)); - viewBinding.tvSelectTime.setText(""); - }else{ - viewBinding.tvSelectTime.setText(planStartTime); - } - - if(TextUtils.isEmpty(planTime)){ - viewBinding.etPlanTime.setHint(getString(R.string.input_water_plan_time)); - viewBinding.etPlanTime.setText(""); - }else{ - viewBinding.etPlanTime.setText(planTime); - } - + public void onTimeSelect(Date date, View v) { + mConfigEntity.getDetails().get(position).setStartTime(ZYTimeUtils.getStrTimeData_H_M(date)); + mWeekAdapter.notifyItemChanged(position); } - }); + }).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(); } private void setClick(View view) { @@ -99,42 +142,50 @@ public class WaterConfigFragment extends BaseFragment list = getSelectedDevices(); - if(list != null){ - + if(checkConfigFinish()){ + ToastUtil.showShort(mContext,"提交"); } break; } } - - private List getSelectedDevices() { - if (getActivity() instanceof AddWaterPlanActivity) { - return ((AddWaterPlanActivity) getActivity()).getSelectedDevices(); + private boolean checkConfigFinish() { + if(TextUtils.isEmpty(viewBinding.etPlanName.getText().toString())){ + ToastUtil.showShort(mContext,getString(R.string.plan_name_text_empty_hint)); + return false; } - return new ArrayList<>(); + List list = mConfigEntity.getDetails(); + //是否勾选了排程日期 + boolean isSelectOne = false; + if(list != null){ + for(WaterPlanWeekEntity.DetailsBean bean : list){ + if(bean.getStatus().equals("1")){ + isSelectOne = true; + } + } + } + if(!isSelectOne){ + ToastUtil.showShort(mContext,getString(R.string.plan_week_empty_hint)); + return false; + } + //是否配置了排程日期的时间 + boolean isPlanConfig = false; + for(WaterPlanWeekEntity.DetailsBean bean : list){ + if(bean.getStatus().equals("1")){ + if((TextUtils.isEmpty(bean.getStartTime()) || + bean.getDurationMin() == 0)){ + ToastUtil.showShort(mContext,"请完成" + bean.getWeekName() + "的时间配置"); + return false; + } + } + } + return true; } + @Override public WaterPlanPresenter createPresenter() { return new WaterPlanPresenter(new WaterPlanImpl()); diff --git a/app/src/main/java/com/ckkj/water/plan/WaterPlanFragment.java b/app/src/main/java/com/ckkj/water/plan/WaterPlanFragment.java index 3e3fdd0..06a4be1 100644 --- a/app/src/main/java/com/ckkj/water/plan/WaterPlanFragment.java +++ b/app/src/main/java/com/ckkj/water/plan/WaterPlanFragment.java @@ -11,7 +11,7 @@ import com.ckkj.water.base.BaseFragment; import com.ckkj.water.databinding.WaterPlanFragmentBinding; import com.ckkj.water.main.activity.MainActivity; import com.ckkj.water.network.BaseBean; -import com.ckkj.water.plan.adapter.WaterPlanListAdapter; +//import com.ckkj.water.plan.adapter.WaterPlanListAdapter; import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.mvp.WaterPlanContract; import com.ckkj.water.plan.mvp.WaterPlanImpl; @@ -25,14 +25,14 @@ import java.util.List; public class WaterPlanFragment extends BaseFragment implements WaterPlanContract.WaterPlanView { - private List mDevList = new ArrayList<>(); - private WaterPlanListAdapter mAdapter; +// private List mDevList = new ArrayList<>(); +// private WaterPlanListAdapter mAdapter; @Override public void initData(Bundle state) { String jsonContent = getString(R.string.plan_water_entity_json); WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class); - mDevList = entity.getDeviceList(); +// mDevList = entity.getDeviceList(); ImmersionBar.with(mContext) .statusBarColor(R.color.mainBackgroundColor) @@ -43,14 +43,14 @@ public class WaterPlanFragment extends BaseFragment { - private Context mContext; - private Set mSelectedPositions = new HashSet<>(); - - public BindDeviceAdapter(Context context, int layoutResId, @Nullable List data) { - super(layoutResId, data); - this.mContext = context; - } - - @Override - protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DeviceEntity item) { - CheckBox checkBox = helper.getView(R.id.radio); - helper.setText(R.id.tv_device_name, item.getDeviceName()); - helper.setText(R.id.tv_device_serial, item.getDeviceCode()); - checkBox.setChecked(mSelectedPositions.contains(helper.getLayoutPosition())); - } - - public void toggleSelection(int position) { - if (mSelectedPositions.contains(position)) { - mSelectedPositions.remove(position); - } else { - mSelectedPositions.add(position); - } - notifyDataSetChanged(); - } - - public void clearSelection() { - mSelectedPositions.clear(); - notifyDataSetChanged(); - } - - public Set getSelectedPositions() { - return new HashSet<>(mSelectedPositions); - } - - public int getSelectedCount() { - return mSelectedPositions.size(); - } -} +//package com.ckkj.water.plan.adapter; +// +//import android.content.Context; +//import android.widget.CheckBox; +// +//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.HashSet; +//import java.util.List; +//import java.util.Set; +// +//public class BindDeviceAdapter extends BaseQuickAdapter { +// private Context mContext; +// private Set mSelectedPositions = new HashSet<>(); +// +// public BindDeviceAdapter(Context context, int layoutResId, @Nullable List data) { +// super(layoutResId, data); +// this.mContext = context; +// } +// +// @Override +// protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DeviceEntity item) { +// CheckBox checkBox = helper.getView(R.id.radio); +// helper.setText(R.id.tv_device_name, item.getDeviceName()); +// helper.setText(R.id.tv_device_serial, item.getDeviceCode()); +// checkBox.setChecked(mSelectedPositions.contains(helper.getLayoutPosition())); +// } +// +// public void toggleSelection(int position) { +// if (mSelectedPositions.contains(position)) { +// mSelectedPositions.remove(position); +// } else { +// mSelectedPositions.add(position); +// } +// notifyDataSetChanged(); +// } +// +// public void clearSelection() { +// mSelectedPositions.clear(); +// notifyDataSetChanged(); +// } +// +// public Set getSelectedPositions() { +// return new HashSet<>(mSelectedPositions); +// } +// +// public int getSelectedCount() { +// return mSelectedPositions.size(); +// } +//} diff --git a/app/src/main/java/com/ckkj/water/plan/adapter/PlanDetailDeviceAdapter.java b/app/src/main/java/com/ckkj/water/plan/adapter/PlanDetailDeviceAdapter.java index 3d82ae6..7614135 100644 --- a/app/src/main/java/com/ckkj/water/plan/adapter/PlanDetailDeviceAdapter.java +++ b/app/src/main/java/com/ckkj/water/plan/adapter/PlanDetailDeviceAdapter.java @@ -1,23 +1,23 @@ -package com.ckkj.water.plan.adapter; - -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; - -public class PlanDetailDeviceAdapter extends BaseQuickAdapter { - - public PlanDetailDeviceAdapter(int layoutResId, @Nullable List data) { - super(layoutResId, data); - } - - @Override - protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DeviceEntity item) { - helper.setText(R.id.tv_device_name,item.getDeviceName()); - helper.setText(R.id.tv_device_serial,item.getDeviceCode()); - } -} +//package com.ckkj.water.plan.adapter; +// +//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; +// +//public class PlanDetailDeviceAdapter extends BaseQuickAdapter { +// +// public PlanDetailDeviceAdapter(int layoutResId, @Nullable List data) { +// super(layoutResId, data); +// } +// +// @Override +// protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DeviceEntity item) { +// helper.setText(R.id.tv_device_name,item.getDeviceName()); +// helper.setText(R.id.tv_device_serial,item.getDeviceCode()); +// } +//} 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 7d0b701..7f46892 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,24 +1,24 @@ -package com.ckkj.water.plan.adapter; - -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; - -public class PlanDetailTimeAdapter extends BaseQuickAdapter { - - public PlanDetailTimeAdapter(int layoutResId, @Nullable List data) { - super(layoutResId, data); - } - - @Override - protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.WashCycleEntity item) { - helper.setText(R.id.tv_week,item.getWeek()); - helper.setText(R.id.tv_start_time,item.getTime()); - helper.setText(R.id.tv_duration,item.getDuration()); - } -} +//package com.ckkj.water.plan.adapter; +// +//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; +// +//public class PlanDetailTimeAdapter extends BaseQuickAdapter { +// +// public PlanDetailTimeAdapter(int layoutResId, @Nullable List data) { +// super(layoutResId, data); +// } +// +// @Override +// protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.WashCycleEntity item) { +// helper.setText(R.id.tv_week,item.getWeek()); +// helper.setText(R.id.tv_start_time,item.getTime()); +// helper.setText(R.id.tv_duration,item.getDuration()); +// } +//} diff --git a/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanListAdapter.java b/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanListAdapter.java index 9629a12..bd0ccb7 100644 --- a/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanListAdapter.java +++ b/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanListAdapter.java @@ -1,33 +1,33 @@ -package com.ckkj.water.plan.adapter; - -import android.content.Context; -import android.widget.CheckBox; - -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.HashSet; -import java.util.List; -import java.util.Set; - -public class WaterPlanListAdapter extends BaseQuickAdapter { - private Context mContext; - - public WaterPlanListAdapter(Context context, int layoutResId, @Nullable List data) { - super(layoutResId, data); - this.mContext = context; - } - - @Override - protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DeviceEntity item) { - helper.setText(R.id.tv_device_name, item.getDeviceName()); - helper.setText(R.id.tv_device_serial, item.getDeviceCode()); - } - - - -} +//package com.ckkj.water.plan.adapter; +// +//import android.content.Context; +//import android.widget.CheckBox; +// +//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.HashSet; +//import java.util.List; +//import java.util.Set; +// +//public class WaterPlanListAdapter extends BaseQuickAdapter { +// private Context mContext; +// +// public WaterPlanListAdapter(Context context, int layoutResId, @Nullable List data) { +// super(layoutResId, data); +// this.mContext = context; +// } +// +// @Override +// protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DeviceEntity item) { +// helper.setText(R.id.tv_device_name, item.getDeviceName()); +// helper.setText(R.id.tv_device_serial, item.getDeviceCode()); +// } +// +// +// +//} diff --git a/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanWeekAdapter.java b/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanWeekAdapter.java index 99d396f..3676668 100644 --- a/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanWeekAdapter.java +++ b/app/src/main/java/com/ckkj/water/plan/adapter/WaterPlanWeekAdapter.java @@ -7,7 +7,9 @@ import static android.view.View.VISIBLE; import android.content.Context; import android.text.TextUtils; import android.view.View; +import android.widget.CheckBox; import android.widget.LinearLayout; +import android.widget.TextView; import androidx.annotation.Nullable; @@ -19,36 +21,66 @@ import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import java.util.ArrayList; import java.util.List; -public class WaterPlanWeekAdapter extends BaseQuickAdapter { - private List mList = new ArrayList<>(); +public class WaterPlanWeekAdapter extends BaseQuickAdapter { + private List mList = new ArrayList<>(); private Context mContext; private int mPos = 0; - public WaterPlanWeekAdapter(Context context,int layoutResId, @Nullable List data) { + public WaterPlanWeekAdapter(Context context,int layoutResId, @Nullable List data) { super(layoutResId, data); this.mContext = context; this.mList = data; } @Override - protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.WashCycleEntity item) { - helper.setText(R.id.tv_week,item.getWeek()); - 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)); + 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{ - 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); - } + 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) { 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 41382b5..867c65f 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 @@ -3,150 +3,62 @@ package com.ckkj.water.plan.entity; import java.io.Serializable; import java.util.List; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@Data public class WaterPlanWeekEntity implements Serializable { - /** - * 排程名称 - */ - private String scheduleName; /** - * 状态 + * id : 2057637613963182082 + * userId : 2056543507514097665 + * name : 排程四 + * deviceIds : null + * status : 1 + * details : [{"createDept":null,"createBy":"2056543507514097665","createTime":"2026-05-22 09:40:10","updateBy":"2056543507514097665","updateTime":"2026-05-22 09:40:10","id":"2057637613963182083","scheduleId":"2057637613963182082","weekday":1,"startTime":"2026-04-11 10:12:12","durationMin":20,"zones":null,"triggerType":"0","status":"1"},{"createDept":null,"createBy":"2056543507514097665","createTime":"2026-05-22 09:40:10","updateBy":"2056543507514097665","updateTime":"2026-05-22 09:40:10","id":"2057637613963182084","scheduleId":"2057637613963182082","weekday":2,"startTime":"2026-04-11 10:12:12","durationMin":20,"zones":null,"triggerType":"0","status":"1"},{"createDept":null,"createBy":"2056543507514097665","createTime":"2026-05-22 09:40:10","updateBy":"2056543507514097665","updateTime":"2026-05-22 09:40:10","id":"2057637613963182085","scheduleId":"2057637613963182082","weekday":3,"startTime":"2026-04-11 10:12:12","durationMin":20,"zones":null,"triggerType":"0","status":"1"}] */ - private boolean enable; - /** - * 洗水周期列表 - */ - private List washCycleList; - - /** - * 关联设备列表 - */ - private List deviceList; - - public String getScheduleName() { - return scheduleName; - } - - public void setScheduleName(String scheduleName) { - this.scheduleName = scheduleName; - } - - public boolean isEnable() { - return enable; - } - - public void setEnable(boolean enable) { - this.enable = enable; - } - - public List getWashCycleList() { - return washCycleList; - } - - public void setWashCycleList(List washCycleList) { - this.washCycleList = washCycleList; - } - - public List getDeviceList() { - return deviceList; - } - - public void setDeviceList(List deviceList) { - this.deviceList = deviceList; - } - - /** - * 洗水周期 - */ - public static class WashCycleEntity { + private String id; + private String userId; + private String name; + private Object deviceIds; + private String status; + private List details; + @NoArgsConstructor + @Data + public static class DetailsBean implements Serializable{ /** - * 星期 - * 如:周一 + * createDept : null + * createBy : 2056543507514097665 + * createTime : 2026-05-22 09:40:10 + * updateBy : 2056543507514097665 + * updateTime : 2026-05-22 09:40:10 + * id : 2057637613963182083 + * scheduleId : 2057637613963182082 + * weekday : 1 + * startTime : 2026-04-11 10:12:12 + * durationMin : 20 + * zones : null + * triggerType : 0 + * status : 1 */ - private String week; - /** - * 时间 - * 如:10:30 - */ - private String time; - - /** - * 时长 - * 如:10min - */ - private String duration; - - public String getWeek() { - return week; - } - - public void setWeek(String week) { - this.week = week; - } - - public String getTime() { - return time; - } - - public void setTime(String time) { - this.time = time; - } - - public String getDuration() { - return duration; - } - - public void setDuration(String duration) { - this.duration = duration; - } - } - - /** - * 设备实体 - */ - public static class DeviceEntity { - - /** - * 设备名称 - */ - private String deviceName; - - /** - * 设备编号 - */ - private String deviceCode; - - /** - * 是否已关联 - */ - private boolean bind; - - public String getDeviceName() { - return deviceName; - } - - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceCode() { - return deviceCode; - } - - public void setDeviceCode(String deviceCode) { - this.deviceCode = deviceCode; - } - - public boolean isBind() { - return bind; - } - - public void setBind(boolean bind) { - this.bind = bind; - } + private Object createDept; + private String createBy; + private String createTime; + private String updateBy; + private String updateTime; + private String id; + private String scheduleId; + private int weekday; + private String weekName; + private String startTime; + private int durationMin = 0; + private Object zones; + private String triggerType; + private String status; } } diff --git a/app/src/main/java/com/ckkj/water/utils/time/ZYTimeUtils.java b/app/src/main/java/com/ckkj/water/utils/time/ZYTimeUtils.java index 5a51dce..fdf33c0 100644 --- a/app/src/main/java/com/ckkj/water/utils/time/ZYTimeUtils.java +++ b/app/src/main/java/com/ckkj/water/utils/time/ZYTimeUtils.java @@ -974,4 +974,18 @@ public class ZYTimeUtils { } } + private static final String[] WEEK_NAMES = {"周一", "周二", "周三", "周四", "周五", "周六", "周日"}; + + /** + * 根据星期索引获取星期名称 + * @param weekday 星期索引,0=周一,1=周二,...,6=周日 + * @return 对应的星期名称 + */ + public static String getWeekName(int weekday) { + if (weekday >= 0 && weekday < 7) { + return WEEK_NAMES[weekday]; + } + return ""; + } + } diff --git a/app/src/main/res/layout/plan_week_config_item.xml b/app/src/main/res/layout/plan_week_config_item.xml new file mode 100644 index 0000000..dbda49b --- /dev/null +++ b/app/src/main/res/layout/plan_week_config_item.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/water_config_fragment_layout.xml b/app/src/main/res/layout/water_config_fragment_layout.xml index 7e3882b..a2c24a1 100644 --- a/app/src/main/res/layout/water_config_fragment_layout.xml +++ b/app/src/main/res/layout/water_config_fragment_layout.xml @@ -1,5 +1,5 @@ - - - - - - + - - - - - - - - - - - + android:paddingHorizontal="@dimen/dp_30"> - - - - - - - - - - + android:hint="@string/input_plan_name"/> + + + + + + android:text="@string/plan_period" + android:layout_marginVertical="@dimen/dp_13"/> + + + - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index d51cc2f..988e8d8 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -96,6 +96,7 @@ 浇水时长 开始时间 请选择浇水时间 + 浇水时长不能小于0 请输入浇水时长 状态 删除 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cef8583..aad78f1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -92,11 +92,14 @@ 关联设备 新增排程 排程名称 + 排程名称不能为空 + 请选择排程日期 浇水周期 浇水时长 开始时间 请选择浇水时间 请输入浇水时长 + 浇水时长不能小于0 状态 删除 编辑