From ac8f236668d6175865351e1e77f93c878f19fb9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Tue, 14 Apr 2026 16:57:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(task):=20=E6=B7=BB=E5=8A=A0=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3=E6=8C=87=E4=BB=A4=E5=BF=AB=E9=80=9F=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E5=8F=AF=E8=A7=81=E4=BB=BB=E5=8A=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现通过语音命令直接跳转到指定位置的任务 - 支持前10条任务的语音快捷操作(查看、打开、处理) - 添加openVisibleTask方法用于计算当前可视区域内目标任务位置 - 添加openTask方法统一处理不同任务类型的页面跳转逻辑 - 重构适配器点击事件,复用openTask方法减少代码重复 - 完善边界检查避免超出可视区域或任务列表范围的错误访问 --- .../nova/brain/glass/ui/TaskListActivity.kt | 67 ++++++++++++++----- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt index 8be87af..b735d1b 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt @@ -58,7 +58,34 @@ class TaskListActivity : toPre() } "查看第一条任务", "查看第一项任务", "打开第一条任务","打开第一项任务", "处理第一条任务", "处理第一项任务" -> { - toPre() + openVisibleTask(0) + } + "查看第二条任务", "查看第二项任务", "打开第二条任务", "打开第二项任务", "处理第二条任务", "处理第二项任务" -> { + openVisibleTask(1) + } + "查看第三条任务", "查看第三项任务", "打开第三条任务", "打开第三项任务", "处理第三条任务", "处理第三项任务" -> { + openVisibleTask(2) + } + "查看第四条任务", "查看第四项任务", "打开第四条任务", "打开第四项任务", "处理第四条任务", "处理第四项任务" -> { + openVisibleTask(3) + } + "查看第五条任务", "查看第五项任务", "打开第五条任务", "打开第五项任务", "处理第五条任务", "处理第五项任务" -> { + openVisibleTask(4) + } + "查看第六条任务", "查看第六项任务", "打开第六条任务", "打开第六项任务", "处理第六条任务", "处理第六项任务" -> { + openVisibleTask(5) + } + "查看第七条任务", "查看第七项任务", "打开第七条任务", "打开第七项任务", "处理第七条任务", "处理第七项任务" -> { + openVisibleTask(6) + } + "查看第八条任务", "查看第八项任务", "打开第八条任务", "打开第八项任务", "处理第八条任务", "处理第八项任务" -> { + openVisibleTask(7) + } + "查看第九条任务", "查看第九项任务", "打开第九条任务", "打开第九项任务", "处理第九条任务", "处理第九项任务" -> { + openVisibleTask(8) + } + "查看第十条任务", "查看第十项任务", "打开第十条任务", "打开第十项任务", "处理第十条任务", "处理第十项任务" -> { + openVisibleTask(9) } } } @@ -105,6 +132,29 @@ class TaskListActivity : adapter.notifyDataSetChanged() } + private fun openVisibleTask(offset: Int) { + val layoutManager = binding.baseRecyclerView.layoutManager as? LinearLayoutManager ?: return + val firstVisible = layoutManager.findFirstVisibleItemPosition() + if (firstVisible == RecyclerView.NO_POSITION) { + return + } + val targetPosition = firstVisible + offset + val lastVisible = layoutManager.findLastVisibleItemPosition() + if (targetPosition > lastVisible || targetPosition >= adapter.itemCount) { + return + } + openTask(targetPosition) + } + + private fun openTask(position: Int) { + when (position % 4) { + 0 -> startActivity(Intent(this@TaskListActivity, FoActivity::class.java)) + 1 -> startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java)) + 2 -> startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java)) + 3 -> startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java)) + } + } + override fun onResume() { super.onResume() OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener) @@ -122,20 +172,7 @@ class TaskListActivity : .setText(R.id.tv_title, "${displayPosition}.张三提交的出差预算申请审核任务,从上海到北京,3月23开始3月24结束,预算金额¥1800元。【已逾期】") .setClickListener(R.id.tv_title ) { - when(position%4){ - 0 -> { - startActivity(Intent(this@TaskListActivity, FoActivity::class.java)) - } - 1 -> { - startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java)) - } - 2 -> { - startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java)) - } - 3 -> { - startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java)) - } - } + openTask(position) } } }