Horis há 3 anos atrás
pai
commit
39b49f82cc

+ 7 - 2
app/src/main/java/io/legado/app/model/webBook/SearchModel.kt

@@ -28,6 +28,7 @@ class SearchModel(private val scope: CoroutineScope, private val callBack: CallB
     private var tasks = CompositeCoroutine()
     private var tasks = CompositeCoroutine()
     private var bookSourceList = arrayListOf<BookSource>()
     private var bookSourceList = arrayListOf<BookSource>()
     private var searchBooks = arrayListOf<SearchBook>()
     private var searchBooks = arrayListOf<SearchBook>()
+    private val emptyBookSource = BookSource()
 
 
     @Volatile
     @Volatile
     private var searchIndex = -1
     private var searchIndex = -1
@@ -76,6 +77,7 @@ class SearchModel(private val scope: CoroutineScope, private val callBack: CallB
             return
             return
         }
         }
         searchIndex++
         searchIndex++
+        val searchIndex = searchIndex
         val source = bookSourceList[searchIndex]
         val source = bookSourceList[searchIndex]
         val searchPool = searchPool ?: return
         val searchPool = searchPool ?: return
         val task = WebBook.searchBook(
         val task = WebBook.searchBook(
@@ -91,7 +93,7 @@ class SearchModel(private val scope: CoroutineScope, private val callBack: CallB
                 onSuccess(searchId, it)
                 onSuccess(searchId, it)
             }
             }
             .onFinally {
             .onFinally {
-                onFinally(searchId)
+                onFinally(searchId, searchIndex)
             }
             }
         tasks.add(task)
         tasks.add(task)
     }
     }
@@ -107,12 +109,15 @@ class SearchModel(private val scope: CoroutineScope, private val callBack: CallB
     }
     }
 
 
     @Synchronized
     @Synchronized
-    private fun onFinally(searchId: Long) {
+    private fun onFinally(searchId: Long, index: Int) {
         if (searchIndex < bookSourceList.lastIndex) {
         if (searchIndex < bookSourceList.lastIndex) {
             search(searchId)
             search(searchId)
         } else {
         } else {
             searchIndex++
             searchIndex++
         }
         }
+        if (index <= bookSourceList.lastIndex) {
+            bookSourceList[index] = emptyBookSource
+        }
         if (searchIndex >= bookSourceList.lastIndex
         if (searchIndex >= bookSourceList.lastIndex
             + min(bookSourceList.size, threadCount)
             + min(bookSourceList.size, threadCount)
         ) {
         ) {

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

@@ -212,6 +212,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
         binding.rvHistoryKey.adapter = historyKeyAdapter
         binding.rvHistoryKey.adapter = historyKeyAdapter
         binding.recyclerView.layoutManager = LinearLayoutManager(this)
         binding.recyclerView.layoutManager = LinearLayoutManager(this)
         binding.recyclerView.adapter = adapter
         binding.recyclerView.adapter = adapter
+        binding.recyclerView.itemAnimator = null
         adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
         adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
             override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
             override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
                 super.onItemRangeInserted(positionStart, itemCount)
                 super.onItemRangeInserted(positionStart, itemCount)