任务列表新增正序排列功能,编辑对话框添加现在按钮

- 添加 sortTaskList() 按排档时间正序排列列表
- 加载、添加、编辑、删除、排档后均排序并刷新界面
- 编辑/添加对话框的排档时间输入框旁增加现在按钮
- 点击现在按钮将当前整点时间填入输入框
This commit is contained in:
aBuild
2026-05-22 17:01:34 +08:00
parent a11bad310b
commit 43e783f5aa
4 changed files with 74 additions and 12 deletions
Vendored Regular → Executable
View File
+2 -2
View File
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Thu May 21 00:15:15 HKT 2026
#Fri May 22 16:56:04 HKT 2026
stageCount=4
libraryProject=
baseVersion=15.20
publishVersion=15.20.3
buildCount=0
buildCount=11
baseBetaVersion=15.20.4
@@ -22,6 +22,8 @@ import cc.winboll.studio.libappbase.ToastUtils;
import cc.winboll.studio.stallhelper.R;
import cc.winboll.studio.stallhelper.beans.TaskSchedulerBean;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
* @Author ZhanGSKen
@@ -93,6 +95,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
} else {
LogUtils.i(TAG, "loadTaskData: 未找到已保存的任务数据,使用空列表");
}
sortTaskList();
}
/**
@@ -107,6 +110,21 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
}
}
/**
* 按排档时间倒序排列列表
*/
private void sortTaskList() {
Collections.sort(mTaskList, new Comparator<TaskSchedulerBean>() {
@Override
public int compare(TaskSchedulerBean a, TaskSchedulerBean b) {
long diff = a.getCurrentScheduleTime() - b.getCurrentScheduleTime();
if (diff > 0) return 1;
if (diff < 0) return -1;
return 0;
}
});
}
/**
* 格式化时间戳为年月日和小时
* @param timestamp 时间戳
@@ -241,6 +259,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
final EditText etRemark = dialog.findViewById(R.id.dialog_et_remark);
Button btnCancel = dialog.findViewById(R.id.dialog_btn_cancel);
Button btnSave = dialog.findViewById(R.id.dialog_btn_save);
Button btnNow = dialog.findViewById(R.id.dialog_btn_now);
etTaskName.setText(task.getTaskName());
etCurrentScheduleTime.setText(formatTimestamp(task.getCurrentScheduleTime()));
@@ -263,6 +282,17 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
etHour.setText(Integer.toString(hour));
}
btnNow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.set(java.util.Calendar.MINUTE, 0);
calendar.set(java.util.Calendar.SECOND, 0);
calendar.set(java.util.Calendar.MILLISECOND, 0);
etCurrentScheduleTime.setText(formatTimestamp(calendar.getTimeInMillis()));
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -311,7 +341,8 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
task.setDurationMinutes(durationMinutes);
task.setRemark(remark);
mAdapter.notifyItemChanged(position);
sortTaskList();
mAdapter.notifyDataSetChanged();
saveTaskData();
LogUtils.i(TAG, "showEditTaskDialog: 任务 [" + taskName + "] 数据已更新,排档幅度=" + durationMinutes + "分钟");
dialog.dismiss();
@@ -336,6 +367,7 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
final EditText etRemark = dialog.findViewById(R.id.dialog_et_remark);
Button btnCancel = dialog.findViewById(R.id.dialog_btn_cancel);
Button btnSave = dialog.findViewById(R.id.dialog_btn_save);
Button btnNow = dialog.findViewById(R.id.dialog_btn_now);
// 设置默认时间为当前时间
java.util.Calendar calendar = java.util.Calendar.getInstance();
@@ -344,6 +376,17 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
calendar.set(java.util.Calendar.MILLISECOND, 0);
etCurrentScheduleTime.setText(formatTimestamp(calendar.getTimeInMillis()));
btnNow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.set(java.util.Calendar.MINUTE, 0);
cal.set(java.util.Calendar.SECOND, 0);
cal.set(java.util.Calendar.MILLISECOND, 0);
etCurrentScheduleTime.setText(formatTimestamp(cal.getTimeInMillis()));
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -389,7 +432,8 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
int durationMinutes = convertToTotalMinutes(month, day, hour);
TaskSchedulerBean newTask = new TaskSchedulerBean(taskName, remark, timestamp, durationMinutes);
mTaskList.add(newTask);
mAdapter.notifyItemInserted(mTaskList.size() - 1);
sortTaskList();
mAdapter.notifyDataSetChanged();
saveTaskData();
LogUtils.i(TAG, "showAddTaskDialog: 任务 [" + taskName + "] 已添加,排档幅度=" + durationMinutes + "分钟");
dialog.dismiss();
@@ -462,7 +506,8 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
public void onClick(View v) {
String taskName = task.getTaskName();
mTaskList.remove(position);
mAdapter.notifyItemRemoved(position);
sortTaskList();
mAdapter.notifyDataSetChanged();
saveTaskData();
LogUtils.i(TAG, "showDeleteConfirmDialog: 任务 [" + taskName + "] 已删除");
dialog.dismiss();
@@ -485,7 +530,8 @@ public class TaskSchedulerActivity extends WinBoLLActivity {
long newTime = currentTime + duration * 60 * 1000L;
LogUtils.i(TAG, "performSchedule: 当前时间 " + formatTimestamp(currentTime) + " + " + duration + "分钟 = " + formatTimestamp(newTime));
currentTask.setCurrentScheduleTime(newTime);
mAdapter.notifyItemChanged(position);
sortTaskList();
mAdapter.notifyDataSetChanged();
saveTaskData();
LogUtils.i(TAG, "performSchedule: 更新任务 [" + currentTask.getTaskName() + "] 时间更新为 " + formatTimestamp(newTime));
}
@@ -40,14 +40,30 @@
android:paddingTop="15dp"
android:paddingBottom="5dp"/>
<EditText
android:id="@+id/dialog_et_start_time"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="例如:09:00"
android:inputType="time"
android:padding="10dp"
android:background="@android:drawable/edit_text"/>
android:orientation="horizontal"
android:gravity="center_vertical">
<EditText
android:id="@+id/dialog_et_start_time"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="例如:09:00"
android:inputType="time"
android:padding="10dp"
android:background="@android:drawable/edit_text"/>
<Button
android:id="@+id/dialog_btn_now"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="现在"
android:layout_marginStart="10dp"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"