From 25167829cc8f5020eb9cb71c7b1bb77dab53acf6 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Fri, 15 May 2026 14:38:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E5=9C=A8=E5=B7=B2=E9=87=87?= =?UTF-8?q?=E9=9B=86=E9=A3=9F=E6=9D=90=E9=A1=B5=E6=B7=BB=E5=8A=A0=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E5=85=A8=E9=83=A8=E6=95=B0=E6=8D=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ObjectBox 新增 removeAll() 方法清除所有向量数据 - DbViewModel 新增 clearAllCollectedFood() 方法并刷新列表 - CollectedFoodActivity 右上角添加垃圾桶图标,点击通过 CommonDialog 二次确认后清除 Co-Authored-By: Claude Sonnet 4.6 --- .../com/shuwei/dish/match/db/DbViewModel.kt | 12 ++++++++++ .../com/shuwei/dish/match/objbox/ObjectBox.kt | 5 +++++ .../dish/match/ui/CollectedFoodActivity.kt | 22 ++++++++++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/shuwei/dish/match/db/DbViewModel.kt b/app/src/main/java/com/shuwei/dish/match/db/DbViewModel.kt index b87141c..df7bc03 100644 --- a/app/src/main/java/com/shuwei/dish/match/db/DbViewModel.kt +++ b/app/src/main/java/com/shuwei/dish/match/db/DbViewModel.kt @@ -537,5 +537,17 @@ class DbViewModel : ViewModel() { } } + /** + * 清除所有向量采集数据,完成后刷新列表 + * @param onDone 清除完成后在主线程执行的回调 + */ + fun clearAllCollectedFood(onDone: (() -> Unit)? = null) { + viewModelScope.launch { + ObjectBox.removeAll() + loadCollectedFoodList() + onDone?.invoke() + } + } + //-------------------------------------------------------------------------------------------------------- } \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/dish/match/objbox/ObjectBox.kt b/app/src/main/java/com/shuwei/dish/match/objbox/ObjectBox.kt index c5a0cd6..ad3b9fa 100644 --- a/app/src/main/java/com/shuwei/dish/match/objbox/ObjectBox.kt +++ b/app/src/main/java/com/shuwei/dish/match/objbox/ObjectBox.kt @@ -213,6 +213,11 @@ object ObjectBox { getBox()?.query(Food_.name.equal(name))?.build()?.remove() } + // 清除所有向量采集数据 + suspend fun removeAll() = safeDbOp { + getBox()?.removeAll() + } + /** * 按名称分组统计采集数量 * 使用属性查询只加载 name 字段,不加载 foodVector,节省大量内存 diff --git a/app/src/main/java/com/shuwei/dish/match/ui/CollectedFoodActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/CollectedFoodActivity.kt index 2634b7c..0906f04 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/CollectedFoodActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/CollectedFoodActivity.kt @@ -55,6 +55,22 @@ class CollectedFoodActivity : BaseActivity() { } } + /** + * 清除所有采集数据确认弹窗 + */ + private fun showClearAllDialog() { + CommonDialog(this) + .setTitle("清除提示") + .setContent("清除后无法恢复,确认要清除所有采集数据吗?") + .setNegativeButton("取消") + .setPositiveButton("确认") { + dbViewModel.clearAllCollectedFood { + toast("已清除所有采集数据") + } + } + .show() + } + /** * 删除弹窗 */ @@ -96,7 +112,11 @@ class CollectedFoodActivity : BaseActivity() { }, titleAction = { it.text = "已采集食材" }, rightIconAction = { - it.gone() + it.visible() + it.setImageResource(R.drawable.ic_trash_white) + it.setOnClickListener { + showClearAllDialog() + } }, backAction = { it.visible() it.setOnClickListener {