|
|
@@ -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()
|
|
|
}
|
|
|
}
|
|
|
|