|
|
@ -13,23 +13,26 @@ import io.legado.app.lib.theme.accentColor |
|
|
|
import io.legado.app.utils.getCompatColor |
|
|
|
import io.legado.app.utils.getCompatColor |
|
|
|
import io.legado.app.utils.gone |
|
|
|
import io.legado.app.utils.gone |
|
|
|
import io.legado.app.utils.visible |
|
|
|
import io.legado.app.utils.visible |
|
|
|
|
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
|
|
|
|
import kotlinx.coroutines.Deferred |
|
|
|
|
|
|
|
import kotlinx.coroutines.launch |
|
|
|
|
|
|
|
|
|
|
|
class ChapterListAdapter(context: Context, val callback: Callback) : |
|
|
|
class ChapterListAdapter(context: Context, val callback: Callback, private val scope: CoroutineScope) : |
|
|
|
RecyclerAdapter<Pair<BookChapter, String>, ItemChapterListBinding>(context) { |
|
|
|
RecyclerAdapter<Pair<BookChapter, Deferred<String>>, ItemChapterListBinding>(context) { |
|
|
|
|
|
|
|
|
|
|
|
val cacheFileNames = hashSetOf<String>() |
|
|
|
val cacheFileNames = hashSetOf<String>() |
|
|
|
val diffCallBack = object : DiffUtil.ItemCallback<Pair<BookChapter, String>>() { |
|
|
|
val diffCallBack = object : DiffUtil.ItemCallback<Pair<BookChapter, Deferred<String>>>() { |
|
|
|
|
|
|
|
|
|
|
|
override fun areItemsTheSame( |
|
|
|
override fun areItemsTheSame( |
|
|
|
oldItem: Pair<BookChapter, String>, |
|
|
|
oldItem: Pair<BookChapter, Deferred<String>>, |
|
|
|
newItem: Pair<BookChapter, String> |
|
|
|
newItem: Pair<BookChapter, Deferred<String>> |
|
|
|
): Boolean { |
|
|
|
): Boolean { |
|
|
|
return oldItem.first.index == newItem.first.index |
|
|
|
return oldItem.first.index == newItem.first.index |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun areContentsTheSame( |
|
|
|
override fun areContentsTheSame( |
|
|
|
oldItem: Pair<BookChapter, String>, |
|
|
|
oldItem: Pair<BookChapter, Deferred<String>>, |
|
|
|
newItem: Pair<BookChapter, String> |
|
|
|
newItem: Pair<BookChapter, Deferred<String>> |
|
|
|
): Boolean { |
|
|
|
): Boolean { |
|
|
|
return oldItem.first.bookUrl == newItem.first.bookUrl |
|
|
|
return oldItem.first.bookUrl == newItem.first.bookUrl |
|
|
|
&& oldItem.first.url == newItem.first.url |
|
|
|
&& oldItem.first.url == newItem.first.url |
|
|
@ -49,7 +52,7 @@ class ChapterListAdapter(context: Context, val callback: Callback) : |
|
|
|
override fun convert( |
|
|
|
override fun convert( |
|
|
|
holder: ItemViewHolder, |
|
|
|
holder: ItemViewHolder, |
|
|
|
binding: ItemChapterListBinding, |
|
|
|
binding: ItemChapterListBinding, |
|
|
|
item: Pair<BookChapter, String>, |
|
|
|
item: Pair<BookChapter, Deferred<String>>, |
|
|
|
payloads: MutableList<Any> |
|
|
|
payloads: MutableList<Any> |
|
|
|
) { |
|
|
|
) { |
|
|
|
binding.run { |
|
|
|
binding.run { |
|
|
@ -61,7 +64,9 @@ class ChapterListAdapter(context: Context, val callback: Callback) : |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
tvChapterName.setTextColor(context.getCompatColor(R.color.primaryText)) |
|
|
|
tvChapterName.setTextColor(context.getCompatColor(R.color.primaryText)) |
|
|
|
} |
|
|
|
} |
|
|
|
tvChapterName.text = item.second |
|
|
|
scope.launch { |
|
|
|
|
|
|
|
tvChapterName.text = item.second.await() |
|
|
|
|
|
|
|
} |
|
|
|
if (item.first.isVolume) { |
|
|
|
if (item.first.isVolume) { |
|
|
|
//卷名,如第一卷 突出显示 |
|
|
|
//卷名,如第一卷 突出显示 |
|
|
|
tvChapterItem.setBackgroundColor(context.getCompatColor(R.color.btn_bg_press)) |
|
|
|
tvChapterItem.setBackgroundColor(context.getCompatColor(R.color.btn_bg_press)) |
|
|
|