Я пытаюсь добавить настраиваемый список в счетчик и хочу сделать что-то определенное c при выборе элемента из него. кажется, что мои адаптеры привязки работают нормально. Я могу видеть элемент списка, когда нажимаю на счетчик. Однако присвоение onItemSelectedListener ему, похоже, не работает. Любые идеи? Вот мой код
xml file
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/category_layout"
android:layout_width="@dimen/adjustable_size"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:layout_constraintStart_toStartOf="@id/guide_line_start"
app:layout_constraintEnd_toEndOf="@id/guide_line_end"
app:layout_constraintTop_toBottomOf="@+id/category_header">
<Spinner
android:id="@+id/category_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:onCategorySelected="@{viewModel.spinnerListener}"
app:categorySpinnerItems="@{viewModel.stringList}" />
</com.google.android.material.textfield.TextInputLayout>
viewModel class
val spinnerListener: AdapterView.OnItemSelectedListener = object: AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
}
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
Log.d("ABID", "item selected") //does not execute
parent?.setSelection(position)
}
}
bindingAdapters
@BindingAdapter("categorySpinnerItems")
@JvmStatic
fun Spinner.setEntries(categories: List<String>) {
adapter = ArrayAdapter<String>(context, R.layout.item_category_spinner_text_view, categories)
Log.d("ABID", "list added on binding adapter!") //this line executes!
}
@BindingAdapter("onCategorySelected")
@JvmStatic
fun Spinner.onCategoryItemSelected(listener: AdapterView.OnItemSelectedListener) {
Log.d("ABID", "item selection binding adapter attached!") //this line executes!
onItemSelectedListener = listener
}