Я новичок в 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 Прошу прощения, если об этом спрашивали в другом месте;Я, честно говоря, не мог найти решение этого или, по крайней мере, то, что казалось решением этого.