Что ж, ошибка не будет воспроизведена с предоставленным кодом, потому что он был во втором параметре, который я наивно пропустил, думая, что он не связан с проблемой.
Фактический код был:
@BindingAdapter("entries", "hint", requireAll = false)
fun setHintAdapter(view: Spinner, entries: Array<String>, @StringRes hintRes: Int?) {
val hint = hintRes?.run {
try {
MainAct.i.getString(this)
} catch (e: Resources.NotFoundException) {
null
}
} ?: ""
val layout = android.R.layout.simple_spinner_item
view.adapter = HintAdapter(hint, view.context, layout, entries)
}
И XML:
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:entries="@{@stringArray/my_string_array}"
app:hint="@{@string/some_string}"/>
Ошибка совершенно не связана с app:entries
, она в app:hint
.Я предоставляю String
и ожидаю Int
(ну, StringRes).
Меняя его на:
@BindingAdapter("entries", "hint", requireAll = false)
fun setHintAdapter(view: Spinner, entries: Array<String>, hint: String) {
val layout = android.R.layout.simple_spinner_item
view.adapter = HintAdapter(hint, view.context, layout, entries)
}
Исправляет.