Horis 1 год назад
Родитель
Сommit
b155bb372d
1 измененных файлов с 26 добавлено и 0 удалено
  1. 26 0
      app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt

+ 26 - 0
app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt

@@ -83,6 +83,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
     private var historyFlowJob: Job? = null
     private var historyFlowJob: Job? = null
     private var booksFlowJob: Job? = null
     private var booksFlowJob: Job? = null
     private var precisionSearchMenuItem: MenuItem? = null
     private var precisionSearchMenuItem: MenuItem? = null
+    private var isManualStopSearch = false
 
 
     override fun onActivityCreated(savedInstanceState: Bundle?) {
     override fun onActivityCreated(savedInstanceState: Bundle?) {
         binding.llInputHelp.setBackgroundColor(backgroundColor)
         binding.llInputHelp.setBackgroundColor(backgroundColor)
@@ -180,6 +181,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
             override fun onQueryTextSubmit(query: String): Boolean {
             override fun onQueryTextSubmit(query: String): Boolean {
                 searchView.clearFocus()
                 searchView.clearFocus()
                 query.trim().let { searchKey ->
                 query.trim().let { searchKey ->
+                    isManualStopSearch = false
                     viewModel.saveSearchKey(searchKey)
                     viewModel.saveSearchKey(searchKey)
                     viewModel.searchKey = ""
                     viewModel.searchKey = ""
                     viewModel.search(searchKey)
                     viewModel.search(searchKey)
@@ -234,6 +236,14 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
                 }
                 }
             }
             }
         })
         })
+        binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
+            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                super.onScrolled(recyclerView, dx, dy)
+                if (!recyclerView.canScrollVertically(1)) {
+                    scrollToBottom()
+                }
+            }
+        })
     }
     }
 
 
     private fun initOtherView() {
     private fun initOtherView() {
@@ -244,6 +254,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
                 .create()
                 .create()
         binding.fbStartStop.setOnClickListener {
         binding.fbStartStop.setOnClickListener {
             if (viewModel.isSearchLiveData.value == true) {
             if (viewModel.isSearchLiveData.value == true) {
+                isManualStopSearch = true
                 viewModel.stop()
                 viewModel.stop()
                 binding.refreshProgressBar.isAutoLoading = false
                 binding.refreshProgressBar.isAutoLoading = false
             } else {
             } else {
@@ -295,6 +306,21 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
         }
         }
     }
     }
 
 
+    /**
+     * 滚动到底部事件
+     */
+    private fun scrollToBottom() {
+        if (isManualStopSearch) {
+            return
+        }
+        if (viewModel.isSearchLiveData.value == false
+            && viewModel.searchKey.isNotEmpty()
+            && viewModel.hasMore
+        ) {
+            viewModel.search("")
+        }
+    }
+
     /**
     /**
      * 打开关闭输入帮助
      * 打开关闭输入帮助
      */
      */