mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化目录界面
This commit is contained in:
@@ -25,7 +25,7 @@ class ChapterListAdapter(context: Context, val callback: Callback) :
|
||||
DiffRecyclerAdapter<BookChapter, ItemChapterListBinding>(context) {
|
||||
|
||||
val cacheFileNames = hashSetOf<String>()
|
||||
val displayTileMap = ConcurrentHashMap<Int, String>()
|
||||
private val displayTitleMap = ConcurrentHashMap<Int, String>()
|
||||
|
||||
override val diffItemCallback: DiffUtil.ItemCallback<BookChapter>
|
||||
get() = object : DiffUtil.ItemCallback<BookChapter>() {
|
||||
@@ -62,11 +62,16 @@ class ChapterListAdapter(context: Context, val callback: Callback) :
|
||||
|
||||
override fun onCurrentListChanged() {
|
||||
super.onCurrentListChanged()
|
||||
upDisplayTile()
|
||||
upDisplayTitle()
|
||||
callback.onListChanged()
|
||||
}
|
||||
|
||||
fun upDisplayTile() {
|
||||
fun clearDisplayTitle() {
|
||||
upDisplayTileJob?.cancel()
|
||||
displayTitleMap.clear()
|
||||
}
|
||||
|
||||
fun upDisplayTitle() {
|
||||
upDisplayTileJob?.cancel()
|
||||
upDisplayTileJob = Coroutine.async(callback.scope) {
|
||||
val replaceRules = replaceRules
|
||||
@@ -75,8 +80,8 @@ class ChapterListAdapter(context: Context, val callback: Callback) :
|
||||
if (!isActive) {
|
||||
return@async
|
||||
}
|
||||
if (displayTileMap[it.index] == null) {
|
||||
displayTileMap[it.index] = it.getDisplayTitle(replaceRules, useReplace)
|
||||
if (displayTitleMap[it.index] == null) {
|
||||
displayTitleMap[it.index] = it.getDisplayTitle(replaceRules, useReplace)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -87,12 +92,12 @@ class ChapterListAdapter(context: Context, val callback: Callback) :
|
||||
}
|
||||
|
||||
private fun getDisplayTile(chapter: BookChapter): String {
|
||||
var displayTile = displayTileMap[chapter.index]
|
||||
var displayTile = displayTitleMap[chapter.index]
|
||||
if (displayTile != null) {
|
||||
return displayTile
|
||||
}
|
||||
displayTile = chapter.getDisplayTitle(replaceRules, useReplace)
|
||||
displayTileMap[chapter.index] = displayTile
|
||||
displayTitleMap[chapter.index] = displayTile
|
||||
return displayTile
|
||||
}
|
||||
|
||||
|
||||
@@ -132,8 +132,8 @@ class ChapterListFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_chapt
|
||||
}
|
||||
|
||||
override fun clearDisplayTitle() {
|
||||
adapter.displayTileMap.clear()
|
||||
adapter.upDisplayTile()
|
||||
adapter.clearDisplayTitle()
|
||||
adapter.upDisplayTitle()
|
||||
}
|
||||
|
||||
override val scope: CoroutineScope
|
||||
|
||||
Reference in New Issue
Block a user