Список просмотра очищается при изменении ориентации в Android. (Используя настраиваемый адаптер, List<Class Object>)

Я застрял здесь... В моем приложении я реализовал Listview с CustomAdapter. Customadapter сделан из объекта List, то есть List. И дополнение к этому списку является динамичным. И этот элемент ListView имеет одно поле кнопки, которое используется для удаления выбранного объекта ClassObject из списка. И все это прекрасно работает в одной ориентации. Но когда ориентация меняется на другую, представление списка становится ясным, и я проверяю по коду, List очищается и List.size() возвращает ноль.

И я использую разные макеты для портретной и альбомной ориентации.

Я пробовал android:ConfigChanges="Orientation|Screensize" в файле menifest.xml, он предотвращает мои данные, но он удерживает один в портретном макете, даже когда меняют ландшафт и портят мой макет.

Я хочу знать, как предотвратить мои данные с сопоставлением отдельного макета для пейзажа и портрета.

Я проверил много вопросов здесь, но точно не нашел.

Приложение, должно работать API уровня SDK 8 и выше 15.

и, пожалуйста, скажите мне разницу между onSaveInstanceState(Bundle outInstanceState) и onRetainNonConfigurationInstance().

И когда я смотрю onRetainNonConfigurationInstance () на developer.android, они говорят, что он устарел на уровне API 13. Так что нам следует использовать вместо этого. Пожалуйста, помогите мне. Заранее спасибо. Если нужен мой код, готов выложить здесь.

Я решил как-то сохранить данные, используя приведенный ниже код.

    protected void onSaveInstanceState(Bundle) {
    // save your data
 //lstRoughDetailsPL is an object of List<Rough>
    outState.putSerializable(""+R.id.lstSO,(Serializable) lstRoughDetailsPL);
    super.onSaveInstanceState(outState);
}

@SuppressWarnings("unchecked")
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    // read your previously saved data
        //lstRoughDetailsPL is an global object of List<Rough>
    lstRoughDetailsPL = (List<Rough>)savedInstanceState.getSerializable(""+R.id.lstSO);
    FillGrid();// used do fill the list view by looping around the List<Rough> and passing values as 4 string[] to a CustomAdapter which has 4 textview in each list entry.

}   

но когда звоните или открываете другое приложение на слайде уведомлений, моя активность становится безумной. сказать "К сожалению, MyRoughWorkOutApp остановился"

Что мне нужно сделать? Как я должен сделать? Я на правильном пути?

Если у вас есть пример кода, пожалуйста, предоставьте его

Пожалуйста, помогите мне... нужно срочно.

1 ответ

Я понял. Я изменил свой класс на класс parcelable, а затем передал объект ArrayList в связку.

Теперь все работает отлично и идеально. Если кому-то нужна помощь, не стесняйтесь сказать..