У меня есть представление Модель, которое имеет поле district
, которое является типом MutableLiveData<String>
Я инициализировал его с var district = MutableLiveData<String>("")
Я хочу привязать к нему выбранный элемент, для этого у меня есть BindingClass
object SpinnerBindingUtil {
@BindingAdapter(value = ["selectedValue", "selectedValueAttrChanged"], requireAll = false)
fun bindSpinnerData(
pAppCompatSpinner: Spinner,
newSelectedValue: String,
newTextAttrChanged: InverseBindingListener
) {
pAppCompatSpinner.onItemSelectedListener = object : OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>?,
view: View,
position: Int,
id: Long
) {
newTextAttrChanged.onChange()
}
override fun onNothingSelected(parent: AdapterView<*>?) {}
}
if (newSelectedValue != null) {
val pos =
(pAppCompatSpinner.adapter as ArrayAdapter<String?>).getPosition(
newSelectedValue
)
pAppCompatSpinner.setSelection(pos, true)
}
}
@InverseBindingAdapter(attribute = "selectedValue", event = "selectedValueAttrChanged")
fun captureSelectedValue(pAppCompatSpinner: AppCompatSpinner): String {
return pAppCompatSpinner.selectedItem as String
}
}
и вот мой xml
<Spinner
selectedValue="@=
{addConsumerViewModel.district}"
android:entries="@array/districts"
android:id="@+id/districtSpinner"
style="@style/AddConsumerSpinner"/>
но я получаю ошибку, как я могу решить эту проблему