Avoid some IndexOutOfBoundsExceptions

This commit is contained in:
arkon 2022-10-21 16:45:26 -04:00
parent d2e62ffb19
commit eb742b29f8
2 changed files with 12 additions and 8 deletions

View file

@ -93,10 +93,12 @@ fun ChangeCategoryDialog(
selection.forEach { checkbox -> selection.forEach { checkbox ->
val onChange: (CheckboxState<Category>) -> Unit = { val onChange: (CheckboxState<Category>) -> Unit = {
val index = selection.indexOf(it) val index = selection.indexOf(it)
val mutableList = selection.toMutableList() if (index != -1) {
mutableList.removeAt(index) val mutableList = selection.toMutableList()
mutableList.add(index, it.next()) mutableList.removeAt(index)
selection = mutableList.toList() mutableList.add(index, it.next())
selection = mutableList.toList()
}
} }
Row( Row(
modifier = Modifier modifier = Modifier

View file

@ -14,6 +14,7 @@ import androidx.appcompat.widget.PopupMenu
import androidx.core.content.withStyledAttributes import androidx.core.content.withStyledAttributes
import androidx.core.view.forEach import androidx.core.view.forEach
import androidx.core.view.get import androidx.core.view.get
import androidx.core.view.size
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.core.preference.Preference
import eu.kanade.tachiyomi.databinding.PrefSpinnerBinding import eu.kanade.tachiyomi.databinding.PrefSpinnerBinding
@ -66,12 +67,13 @@ class MaterialSpinnerView @JvmOverloads constructor(context: Context, attrs: Att
} }
fun setSelection(selection: Int) { fun setSelection(selection: Int) {
popup?.menu?.get(selectedPosition)?.let { if (selectedPosition < (popup?.menu?.size ?: 0)) {
it.icon = emptyIcon popup?.menu?.getItem(selectedPosition)?.let {
it.title = entries[selectedPosition] it.icon = emptyIcon
}
} }
selectedPosition = selection selectedPosition = selection
popup?.menu?.get(selectedPosition)?.let { popup?.menu?.getItem(selectedPosition)?.let {
it.icon = checkmarkIcon it.icon = checkmarkIcon
} }
binding.details.text = entries.getOrNull(selection).orEmpty() binding.details.text = entries.getOrNull(selection).orEmpty()