Prechádzať zdrojové kódy

fix(task): 修复任务列表上一页功能的滚动逻辑

- 修改了上一页导航的滚动位置计算方式
- 使用findFirstVisibleItemPosition替代findLastVisibleItemPosition
- 添加了页面大小计算以支持批量滚动
- 修正了边界条件检查避免越界
- 更新了提示消息文本为正确的方向指示
徐勤民 3 dní pred
rodič
commit
a574d23f07

+ 10 - 7
app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt

@@ -40,18 +40,21 @@ class TaskListActivity :
                     "上一页", "查看上一页", "继续上一页" -> {
                         val layoutManager = binding.baseRecyclerView.layoutManager as? LinearLayoutManager
                         if (layoutManager != null) {
-                            val lastVisible = layoutManager.findLastVisibleItemPosition()
-                            val nextPosition = lastVisible + 1
-                            if (nextPosition < adapter.itemCount) {
-                                layoutManager.scrollToPositionWithOffset(nextPosition, 0)
+                            val firstVisible = layoutManager.findFirstVisibleItemPosition()
+                            if (firstVisible > 0) {
+                                val lastVisible = layoutManager.findLastVisibleItemPosition()
+                                val pageSize = (lastVisible - firstVisible).coerceAtLeast(1)
+                                val previousPosition = (firstVisible - pageSize).coerceAtLeast(0)
+                                layoutManager.scrollToPositionWithOffset(previousPosition, 0)
                             } else {
-                                ToolsHelper.showMessage("没有下一页了")
+                                ToolsHelper.showMessage("没有一页了")
                             }
                         }
                     }
                 }
             }
-        })    }
+        })
+    }
     private val adapter = object : CommonPagedAdapter<TaskItem>(R.layout.item_task_list) {
         override fun convert(holder: ViewHolder, item: TaskItem, position: Int) {
             holder
@@ -64,4 +67,4 @@ class TaskListActivity :
     }
 
     override fun adapter(): BasePagedAdapter<TaskItem> = adapter
-}
+}