В Kotlin в Android Studio у меня есть ListView и addButton, когда вы нажимаете кнопку, элемент добавляется в список и отображается в ListView.
У меня есть onSaveInstanceState для работы с изменениями ориентации, и у меня есть другой макет для ландшафтного режима, так что для ListView достаточно места.
У меня есть:
var drinksToday: MutableList<String> = mutableListOf()
lateinit var adapter: ArrayAdapter<String>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
addButton.setOnClickListener {
drinksToday.add(0, "250 ml")
// Print to check addition to list
println(drinksToday.toString())
}
if (savedInstanceState != null) {
savedInstanceState.run {
val list = getStringArray(EXTRA_LIST)
if (list != null) {
drinksToday = list.toMutableList<String>()
}
}
}
adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, drinksToday)
drinksTodayList.adapter = adapter
}
override fun onSaveInstanceState(outState: Bundle?) {
super.onSaveInstanceState(outState)
outState?.run {
putStringArray(EXTRA_LIST, drinksToday.toTypedArray())
}
}
Это прекрасно работает в портретном режиме, но не в ландшафтном режиме.
В портретном режиме, когда я нажимаю кнопку addButton, элемент добавляется в список и отображается в ListView.
В альбомном режиме элемент добавляется в список, но не отображается в ListView. Но когда я возвращаюсь в портретный режим, ListView отображает все добавленные элементы, даже те, которые были добавлены в ландшафтном режиме.
Я не могу понять, почему в альбомном режиме он не будет отображаться при добавлении элемента в список, но при переходе обратно в портретный режим он показывает все добавленные элементы.
Надеюсь, кто-нибудь поможет мне разобраться!