feat(task): 添加语音指令快速访问可见任务功能
- 实现通过语音命令直接跳转到指定位置的任务 - 支持前10条任务的语音快捷操作(查看、打开、处理) - 添加openVisibleTask方法用于计算当前可视区域内目标任务位置 - 添加openTask方法统一处理不同任务类型的页面跳转逻辑 - 重构适配器点击事件,复用openTask方法减少代码重复 - 完善边界检查避免超出可视区域或任务列表范围的错误访问
这个提交包含在:
父节点
2c891e177f
当前提交
ac8f236668
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户