Я работаю над небольшим приложением для Android.Приложение использует пару спиннеров.Я хочу иметь возможность использовать счетчики, но я хочу, чтобы первая опция в Spinner была подсказкой и не выбиралась.
Я нашел несколько обходных путей здесь в StackOverflow.Но не совсем то, что я ищу.
Я нашел следующий репозиторий на Github: https://github.com/sadra/AwesomeSpinner
И это именно то, что я хочу сделать.Но он написан на Java, а мое приложение написано на Kotlin.Я знаю, что они должны работать вместе, но я не могу заставить это работать.Я почти уверен, что проблема заключается в моей неопытности, а не в репозитории или Kotlin v. Java.
Это мой Spinner.Он живет во фрагменте в onViewCreated ().
//String array
val companyNames = resources.getStringArray(R.array.companyName_array)
var nameSpinner = binding.spinnerCustomerName
//Adapter for spinner
nameSpinner.adapter = ArrayAdapter(activity, android.R.layout.simple_spinner_dropdown_item, companyNames)
//item selected listener for spinner
nameSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(p0: AdapterView<*>?) {
TODO("not implemented yet")
}
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
selectedCompanyName = companyNames[p2]
Log.v(LOG_TAG, "Spinner Item Selected --> $companyNames")
}
}
Документы AwesomeSpinner говорят так:
AwesomeSpinner nameSpinner = (AwesomeSpinner) findViewById(R.id.spinner_customerName);
В моем приложении в Котлине я делаю:
var nameSpinner: AwesomeSpinner = binding.spinnerCustomerName as AwesomeSpinner
Вот тут и начинаются мои проблемы.Я не могу понять, как правильно настроить адаптер и прослушиватель.Я пробовал все возможные способы, но что-то упустил или что-то делаю не так.
Работаю над этим и не могу правильно установить адаптер.
companyNamesAdapter.setAdapter(nameSpinner, 0)
Выше указано неверное,.setAdapter
остается разрешаемым ресурсом.
Это исправленный и рабочий код:
//String array
var nameSpinner: AwesomeSpinner = binding.spinnerCustomerName
//Adapter for spinner
var companyNamesAdapter = ArrayAdapter.createFromResource(activity,
R.array.companyname_array, android.R.layout.simple_spinner_dropdown_item)
nameSpinner.setAdapter(companyNamesAdapter, 0)
//item selected listener for spinner
nameSpinner.setOnSpinnerItemClickListener(
object:AwesomeSpinner.onSpinnerItemClickListener<String>() {
nameSpinner.setOnSpinnerItemClickListener { position: Int, itemAtPosition ->
selectedCompanyName = nameSpinner.selectedItem[position].toString()
Log.v(LOG_TAG, "Spinner Item Selected --> $companyNamesAdapter and $itemAtPosition" )
}
Мой XML настроен и выглядит нормально.Как и зависимости и репозитории в Gradle
.