kunfei 4 lat temu
rodzic
commit
8087681892

+ 1 - 0
app/src/main/assets/updateLog.md

@@ -14,6 +14,7 @@
 **2022/05/11**
 
 * 修复替换报错的bug
+* 优化目录界面替换
 
 **2022/05/10**
 

+ 25 - 20
app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt

@@ -20,6 +20,7 @@ import io.legado.app.utils.longToastOnUi
 import io.legado.app.utils.visible
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers.Main
+import kotlinx.coroutines.async
 import kotlinx.coroutines.ensureActive
 import kotlinx.coroutines.withContext
 import java.util.concurrent.ConcurrentHashMap
@@ -79,30 +80,34 @@ class ChapterListAdapter(context: Context, val callback: Callback) :
             val replaceRules = replaceRules
             val useReplace = useReplace
             val items = getItems()
-            for (i in startIndex until items.size) {
-                val item = items[i]
-                if (displayTitleMap[item.title] == null) {
-                    ensureActive()
-                    val displayTitle = item.getDisplayTitle(replaceRules, useReplace)
-                    ensureActive()
-                    displayTitleMap[item.title] = displayTitle
-                    withContext(Main) {
-                        notifyItemChanged(i, true)
+            async {
+                for (i in startIndex until items.size) {
+                    val item = items[i]
+                    if (displayTitleMap[item.title] == null) {
+                        ensureActive()
+                        val displayTitle = item.getDisplayTitle(replaceRules, useReplace)
+                        ensureActive()
+                        displayTitleMap[item.title] = displayTitle
+                        withContext(Main) {
+                            notifyItemChanged(i, true)
+                        }
                     }
                 }
-            }
-            for (i in 0 until startIndex) {
-                val item = items[i]
-                if (displayTitleMap[item.title] == null) {
-                    ensureActive()
-                    val displayTitle = item.getDisplayTitle(replaceRules, useReplace)
-                    ensureActive()
-                    displayTitleMap[item.title] = displayTitle
-                    withContext(Main) {
-                        notifyItemChanged(i, true)
+            }.start()
+            async {
+                for (i in startIndex downTo 0) {
+                    val item = items[i]
+                    if (displayTitleMap[item.title] == null) {
+                        ensureActive()
+                        val displayTitle = item.getDisplayTitle(replaceRules, useReplace)
+                        ensureActive()
+                        displayTitleMap[item.title] = displayTitle
+                        withContext(Main) {
+                            notifyItemChanged(i, true)
+                        }
                     }
                 }
-            }
+            }.start()
         }
     }