Fix library selection #224

pull/226/head
Koitharu 4 years ago
parent 2d727a0da8
commit 6e844e8c3b
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

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

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

Loading…
Cancel
Save