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,11 +93,13 @@ fun ChangeCategoryDialog(
selection.forEach { checkbox ->
val onChange: (CheckboxState<Category>) -> Unit = {
val index = selection.indexOf(it)
if (index != -1) {
val mutableList = selection.toMutableList()
mutableList.removeAt(index)
mutableList.add(index, it.next())
selection = mutableList.toList()
}
}
Row(
modifier = Modifier
.fillMaxWidth()

View file

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