@Koshkasobaka

Как сохранить состояние ListView при смене ориентации экрана?

Пробую передать list через onSaveInstanceState(), но почему-то не работает
class MainActivity : AppCompatActivity(), EditFragment.onSomeEventListener { 
 lateinit var mainBindingClass: ActivityMainBinding 
 private var list = ArrayList<String>() 
 private val detailFragment = DetailFragment() 
 private val editFragment = EditFragment() 
 lateinit var adapter: ArrayAdapter<String> 
 
 override fun onCreate(savedInstanceState: Bundle?) { 
 super.onCreate(savedInstanceState) 
 mainBindingClass = ActivityMainBinding.inflate(layoutInflater) 
 setContentView(mainBindingClass.root) 
 init() 
 initListeners() 
 } 
 
 override fun onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle) { 
 outState?.run { 
 putStringArrayList("sand", list) 
 } 
 super.onSaveInstanceState(outState, outPersistentState) 
 } 
 
 override fun onRestoreInstanceState(savedInstanceState: Bundle?) { 
 super.onRestoreInstanceState(savedInstanceState) 
 list = savedInstanceState?.getStringArrayList("sand") as ArrayList<String> 
 } 
 
 private fun init() { 
 adapter = ArrayAdapter(this, R.layout.my_list_item, list) 
 mainBindingClass.lvListOfNotes.adapter = adapter 
 }
  • Вопрос задан
  • 220 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Читаем документацию onRestoreInstanceState
This method is called between onStart() and onPostCreate(Bundle)

То есть этот метод вызывается сильно после onCreate, в котором у тебя инициализируется адаптер. В onCreate приходит тот же самый бандл, так чтолучше просто достать данные прямо там.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы