Fix library selection #224

This commit is contained in:
Koitharu
2022-09-12 16:24:14 +03:00
parent 2d727a0da8
commit 6e844e8c3b
2 changed files with 15 additions and 18 deletions

View File

@@ -16,7 +16,6 @@ import androidx.savedstate.SavedStateRegistryOwner
import kotlin.coroutines.EmptyCoroutineContext
import kotlinx.coroutines.Dispatchers
import org.koitharu.kotatsu.base.ui.list.decor.AbstractSelectionItemDecoration
import org.koitharu.kotatsu.utils.ext.removeItemDecoration
private const val PROVIDER_NAME = "selection_decoration_sectioned"
@@ -61,24 +60,24 @@ class SectionedSelectionController<T : Any>(
startActionMode()
notifySelectionChanged()
}
recyclerView.removeItemDecoration(decoration.javaClass)
recyclerView.addItemDecoration(decoration)
var shouldAddDecoration = true
for (i in (0 until recyclerView.itemDecorationCount).reversed()) {
val decor = recyclerView.getItemDecorationAt(i)
if (decor === decoration) {
shouldAddDecoration = false
break
} else if (decor.javaClass == decoration.javaClass) {
recyclerView.removeItemDecorationAt(i)
}
}
if (shouldAddDecoration) {
recyclerView.addItemDecoration(decoration)
}
if (pendingData?.isEmpty() == true) {
pendingData = null
}
}
fun isAttached(recyclerView: RecyclerView): Boolean {
if (decorations.isEmpty()) return false
val anyDecoration = decorations.valueAt(0)
for (i in 0 until recyclerView.itemDecorationCount) {
if (recyclerView.getItemDecorationAt(i).javaClass == anyDecoration.javaClass) {
return true
}
}
return false
}
override fun saveState(): Bundle {
val bundle = Bundle(decorations.size)
for ((k, v) in decorations) {

View File

@@ -55,10 +55,8 @@ fun libraryGroupAD(
binding.recyclerView.addItemDecoration(spacingDecoration)
binding.buttonMore.setOnClickListener(listenerAdapter)
bind { payloads ->
if (payloads.isEmpty() || !selectionController.isAttached(binding.recyclerView)) {
selectionController.attachToRecyclerView(item, binding.recyclerView)
}
bind {
selectionController.attachToRecyclerView(item, binding.recyclerView)
binding.textViewTitle.text = item.getTitle(context.resources)
binding.buttonMore.setTextAndVisible(item.showAllButtonText)
adapter.items = item.items