diff --git a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt index aec125643..749968111 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt @@ -2,6 +2,7 @@ package io.legado.app.ui.book.toc import android.content.Context import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil import io.legado.app.R import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.RecyclerAdapter @@ -16,6 +17,22 @@ class ChapterListAdapter(context: Context, val callback: Callback) : RecyclerAdapter(context) { val cacheFileNames = hashSetOf() + val diffCallBack = object : DiffUtil.ItemCallback() { + + override fun areItemsTheSame(oldItem: BookChapter, newItem: BookChapter): Boolean { + return oldItem.index == newItem.index + } + + override fun areContentsTheSame(oldItem: BookChapter, newItem: BookChapter): Boolean { + return oldItem.bookUrl == newItem.bookUrl + && oldItem.url == newItem.url + && oldItem.isVip == newItem.isVip + && oldItem.isPay == newItem.isPay + && oldItem.title == newItem.title + && oldItem.tag == newItem.tag + } + + } override fun getViewBinding(parent: ViewGroup): ItemChapterListBinding { return ItemChapterListBinding.inflate(inflater, parent, false) diff --git a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt index 34d386dc1..382072526 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt @@ -112,7 +112,7 @@ class ChapterListFragment : VMBaseFragment(R.layout.fragment_chapt searchKey.isNullOrBlank() -> appDb.bookChapterDao.flowByBook(viewModel.bookUrl) else -> appDb.bookChapterDao.flowSearch(viewModel.bookUrl, searchKey) }.collect { - adapter.setItems(it) + adapter.setItems(it, adapter.diffCallBack) if (searchKey.isNullOrBlank() && !scrollToDurChapter) { mLayoutManager.scrollToPositionWithOffset(durChapterIndex, 0) scrollToDurChapter = true