Как заставить android блесну показывать один и тот же элемент всегда, а не менять - PullRequest
0 голосов
/ 27 февраля 2020

Короче говоря. Я хочу, чтобы мой счетчик всегда показывал один и тот же первый элемент «Добавить». Когда элемент выбран из списка, его следует удалить из списка и выполнить действие c. Текст «Добавить» все равно должен появиться на счетчике. Поэтому мой вопрос заключается в том, как заставить этот счетчик всегда показывать первый элемент в своем списке данных? PS. Я сделал так, чтобы первый элемент в списке не отображался, когда раскрывающийся список открыт.

Мой макет:

<Spinner
    android:id="@+id/spinner_add"
    style="@style/Widget.AppCompat.Spinner.Underlined"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:backgroundTint="@color/colorButton" />

Способ установки адаптера счетчика со списком данных:

    private fun fillAddSpinner() {
        val spinner: Spinner = findViewById(R.id.spinner_add)
        val titles: MutableList<String> = ArrayList()
        titles.add(resources.getString(R.string.add_advanced_filter))
        for (filter in tableAdvancedFilters) {
            titles.add(filter.title)
        }
        val dataAdapter = object : ArrayAdapter<String?>(this, R.layout.spinner_item,
            titles as List<String?>
        ) {
            override fun getDropDownView(
                position: Int,
                convertView: View?,
                parent: ViewGroup
            ): View {
                var v: View? = null
                // If this is the initial dummy entry, make it hidden
                if (position == 0) {
                    val tv = TextView(context)
                    tv.height = 0
                    tv.visibility = View.GONE
                    v = tv
                } else { // Pass convertView as null to prevent reuse of special case views
                    v = super.getDropDownView(position, null, parent)
                }
                // Hide scroll bar because it appears sometimes unnecessarily, this does not prevent scrolling
                parent.isVerticalScrollBarEnabled = false
                return v!!
            }
        }
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        spinner.adapter = dataAdapter
    }

Я хочу, чтобы он остался таким же, как и сейчас:

My spinner

После того, как пользователь выберет один элемент из счетчика, я выполню определенные c варианты фильтров.

1 Ответ

0 голосов
/ 28 февраля 2020

Если вы хотите программно установить выбранный элемент прядильщика, используйте следующее: spinnerObject.setSelection(INDEX_OF_ITEM)

...