Мне нужно передать идентификатор кликаемого объекта из AutoCompleteTextView в ViewModel. Здесь у меня есть адаптер привязки для установки счетчика с объектами для AutoCompleteTextView.
@BindingAdapter("bindAutocomplete")
fun bindAutocomplete(textView: AutoCompleteTextView, cities: List<City>?){
cities?.let {
val adapter = ArrayAdapter<City>(
textView.context,
R.layout.support_simple_spinner_dropdown_item,
it)
textView.setAdapter(adapter)
}
}
Мой вопрос: где я должен разместить свой OnItemClickListener, в этом адаптере выше или в классе Fragment, как в коде ниже?
Проблема первого способа заключается в том, что я не знаю, как получить доступ к моей ViewModel из Binding Adapter. И, во-вторых, если я помещу этот слушатель в класс Fragment, это не нарушит шаблон, потому что инициализация Biniding Adapter и OnItemClickListener не синхронизируется?
Так что мне нужно передать город. идентификатор некоторого метода в моей ViewModel.
binding.autoCompleteTextView.setOnItemClickListener { parent, view, position, id ->
val city = parent.adapter.getItem(position) as City
binding.viewModel.getWeatherProperties(city.id)
}