侧滑删除

This commit is contained in:
fengjignqi
2026-05-28 16:54:28 +08:00
parent 9d41f8c1eb
commit 967ddca167
3 changed files with 65 additions and 30 deletions

View File

@@ -26,6 +26,7 @@ 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.yanzhenjie.recyclerview.OnItemMenuClickListener;
@@ -33,6 +34,7 @@ import com.yanzhenjie.recyclerview.SwipeMenu;
import com.yanzhenjie.recyclerview.SwipeMenuBridge;
import com.yanzhenjie.recyclerview.SwipeMenuCreator;
import com.yanzhenjie.recyclerview.SwipeMenuItem;
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration;
import java.util.ArrayList;
@@ -72,7 +74,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
mWeekAdapter = new WaterPlanWeekAdapter_copy(mContext, R.layout.plan_period_item,list);
viewBinding.rvWeek.setAdapter(mWeekAdapter);
//周期对应的 时间配置
timeList = weekList.get(0).getTimeData();
List<WaterPlanWeekEntity.TimeDataBean> timeList = weekList.get(0).getTimeData();
mTimeAdapter = new WaterPlanTimeDataAdapter(mContext,R.layout.include_plan_time_item_layout,timeList);
viewBinding.rvTimes.setAdapter(mTimeAdapter);
initListener();
@@ -87,11 +89,9 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
deleteItem.setText("删除");
deleteItem.setTextColor(mContext.getResources().getColor(R.color.white));
deleteItem.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
deleteItem.setWidth((int) mContext.getResources().getDimension(R.dimen.dp_70));
deleteItem.setWidth((int) mContext.getResources().getDimension(R.dimen.dp_90));
// 各种文字和图标属性设置。
rightMenu.addMenuItem(deleteItem); // 在Item右侧添加一个菜单。
}
};
@@ -100,12 +100,21 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
OnItemMenuClickListener mItemMenuClickListener = new OnItemMenuClickListener() {
@Override
public void onItemClick(SwipeMenuBridge menuBridge, int position) {
// 任何操作必须先关闭菜单否则可能出现Item菜单打开状态错乱。
// 先关闭菜单
menuBridge.closeMenu();
// 左侧还是右侧菜单
// 左/右菜单
int direction = menuBridge.getDirection();
// 菜单在Item中的Position
// 点击的是第几个菜单
int menuPosition = menuBridge.getPosition();
// 只处理右侧菜单
if (direction == SwipeRecyclerView.RIGHT_DIRECTION) {
if (menuPosition == 0) {
weekList.get(mWeekAdapter.getmPos()).getTimeData().remove(position);
if(mTimeAdapter != null){
mTimeAdapter.notifyItemRemoved(position);
}
}
}
}
};
@@ -142,6 +151,40 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
mTimeAdapter.setNewData(timeList);
}
});
mTimeAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
switch (view.getId()){
case R.id.tv_select_time:
selectStartTime(position);
break;
case R.id.tv_plan_duration:
break;
}
}
});
}
private void selectStartTime(int position) {
boolean times[] = {false, false, false, true, true, false};
//时间选择器
TimePickerView pvTime = new TimePickerBuilder(mContext, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
//用于提交接口
weekList.get(mWeekAdapter.getmPos()).getTimeData().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) {
@@ -157,25 +200,6 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
weekList.get(selPos).getTimeData().add(timeData);
mTimeAdapter.notifyItemInserted(weekList.get(selPos).getTimeData().size() - 1);
break;
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;

View File

@@ -43,5 +43,7 @@ public class WaterPlanTimeDataAdapter extends BaseQuickAdapter<WaterPlanWeekEnti
helper.setText(R.id.tv_plan_duration,"");
tvPlanDuration.setHint(mContext.getString(R.string.input_water_plan_time));
}
helper.addOnClickListener(R.id.tv_select_time);
helper.addOnClickListener(R.id.tv_plan_duration);
}
}

View File

@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/color_e34d59"/>
<corners android:radius="8dp"/>
</shape>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetRight="12dp">
<shape android:shape="rectangle">
<solid android:color="@color/color_e34d59"/>
<corners
android:radius="8dp"/>
</shape>
</inset>