Как я могу добавить представление простого текста к текущему макету на основе выбора Spinner? - PullRequest
0 голосов
/ 11 июня 2018

Я новичок в Kotlin, Java и Android Studio, но мне нужно разработать приложение, похожее на опрос, для летней практики.С помощью сообщества SO я преодолел некоторые, казалось бы, сложные препятствия (я здесь единственный «разработчик»), но этот вопрос меня озадачил, и я не нашел в SO ничего об этом.

У меня есть пользовательский счетчик, который содержит значения для различных типов крыш (класс NoDefaultSpinner найден здесь ), и при выборе «Другое» я хотел бы, чтобы представление простого текста стало видимым на том же самоммакет, если это возможно.Есть ли способ сделать это, или мне придется обработать случай «Другое», добавив другой экран активности?

Вот что у меня есть:

class PollSectionInfoActivity : AppCompatActivity() {
    private var otherSelected = false

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_poll_section_info)

        val spinner = findViewById<Spinner>(R.id.roofType)
        var roofTypes : Array<String> = emptyArray()
        roofTypes += "BUR"
        roofTypes += "Liquid Applied"
        roofTypes += "Modified Bitumen"
        roofTypes += "Protective Membrane Assembly"
        roofTypes += "Single Ply"
        roofTypes += "Shingles"
        roofTypes += "Tile"
        roofTypes += "Other"
        roofTypes += "Unknown"

        val nextButton = findViewById<Button>(R.id.next_button)
        nextButton.isEnabled = false

        val adapter : ArrayAdapter<String> = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, roofTypes)
        spinner.adapter = adapter
        spinner.onItemSelectedListener

        spinner?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onNothingSelected(parent: AdapterView<*>?) {

            }

            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                val selectedItem = parent!!.getItemAtPosition(position).toString()
                this@PollSectionInfoActivity.otherSelected = selectedItem == "Other"
                nextButton.isEnabled = true
            }
        }
    }

    //TODO: update code to pass selection to next layout.
    fun nextButton() {
        val spinner = findViewById<Spinner>(R.id.roofType)
        val selection = spinner.selectedItem.toString()
    }
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".PollSectionInfoActivity">

<Button
    android:id="@+id/next_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:layout_marginEnd="16dp"
    android:layout_marginRight="16dp"
    android:text="@string/button_next"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent" />

<com.testapp.NoDefaultSpinner
    android:id="@+id/roofType"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:prompt="@string/select_roof_type"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<CheckBox
    android:id="@+id/checkBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="16dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:checked="false"
    android:text="@string/surfacing"
    android:visibility="visible"
    app:layout_constraintStart_toStartOf="@+id/roofType"
    app:layout_constraintTop_toBottomOf="@+id/roofType" />

Кроме того, любая дополнительная помощь или совет, который вы хотите добавить, приветствуется!Я прошел только один (довольно скучный) курс по программному обеспечению в колледже, поэтому я не слишком много знаю обо всем этом.Плюс, я все равно больше человек теории.Заранее спасибо!

PS Прошу прощения, если об этом спрашивали в другом месте;Я, честно говоря, не мог найти решение этого или, по крайней мере, то, что казалось решением этого.

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете добавить TextView к вашему макету и установить видимость невидимой.

<TextView
    android:id = "@+id/textView"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:visibility = "invisible"/>

В методе OnItemSelected, если пользователь выбрал «Другое», вы можете установить видимость TextView для видимой, как этот

textView.visibility = View.VISIBLE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...