Skip to content

Commit 800de54

Browse files
committed
fix(plugin): support for spannable string added to dataSelector
1 parent e3c50d2 commit 800de54

File tree

4 files changed

+13
-7
lines changed

4 files changed

+13
-7
lines changed

pluto-plugins/base/lib/src/main/java/com/pluto/utilities/selector/DataSelector.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ class Selector : ViewModel() {
4141
}
4242

4343
abstract class SelectorOption : ListItem() {
44-
abstract fun displayText(): String
44+
abstract fun displayText(): CharSequence
45+
46+
fun displayTextString(): String = displayText().toString()
4547
}
4648

4749
internal data class SelectorData<T>(val title: String, val list: List<SelectorOption>, val preSelected: T?)

pluto-plugins/base/lib/src/main/java/com/pluto/utilities/selector/ui/DataSelectorDialog.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,12 @@ class DataSelectorDialog : BottomSheetDialogFragment() {
8080
object : DiffAwareAdapter.OnActionListener {
8181
override fun onAction(action: String, data: ListItem, holder: DiffAwareHolder) {
8282
if (data is SelectorOption) {
83-
val tempSet = tempSelectedOptionLiveData.value?.toHashSet() ?: hashSetOf()
84-
if (!tempSet.add(data)) {
85-
tempSet.remove(data)
83+
var tempSet = tempSelectedOptionLiveData.value?.toHashSet() ?: hashSetOf()
84+
val isOptionAlreadyPresent = tempSet.any { it.displayTextString() == data.displayTextString() }
85+
if (isOptionAlreadyPresent) {
86+
tempSet = tempSet.filter { it.displayTextString() != data.displayTextString() }.toHashSet()
87+
} else {
88+
tempSet.add(data)
8689
}
8790
tempSelectedOptionLiveData.postValue(tempSet.toList())
8891
}

pluto-plugins/base/lib/src/main/java/com/pluto/utilities/selector/ui/MultiSelectorAdapter.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ internal class MultiSelectorItemHolder(
5454
selectedLiveData.removeObserver(selectedChoicesObserver)
5555
}
5656

57-
private val selectedChoicesObserver = Observer<List<SelectorOption>> {
58-
binding.checkbox.isSelected = it?.contains(item) ?: run { false }
57+
private val selectedChoicesObserver = Observer<List<SelectorOption>> { list ->
58+
binding.checkbox.isSelected =
59+
item is SelectorOption && list?.any { it.displayTextString() == (item as SelectorOption).displayTextString() } ?: run { false }
5960
}
6061
}

pluto-plugins/base/lib/src/main/java/com/pluto/utilities/selector/ui/SingleSelectorAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ internal class SingleSelectorItemHolder(
3232
binding.title.setSpan {
3333
append(item.displayText())
3434
}
35-
binding.radio.isSelected = selected?.let { it == item } ?: run { false }
35+
binding.radio.isSelected = selected?.let { it.displayTextString() == item.displayTextString() } ?: run { false }
3636
binding.root.setOnDebounceClickListener {
3737
onAction("click")
3838
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy