Android ListActivity - переключение между пустым и непустым списком - PullRequest
1 голос
/ 29 января 2012

Учитывая мой XML-файл ниже, я хочу показать ListView, когда мой список объектов не пустой, и я хочу показать ViewStub, когда мой список пуст. Я могу заставить это работать, но всякий раз, когда я меняю ориентацию экрана, я теряю новые данные, которые я добавил в свой список.

По сути, каждый раз, когда я добавляю новый объект, я вызываю метод changeData () моего адаптера, который изменяет список объектов и вызывает метод notifyDataSetChanged(). Любой совет, как сделать так, чтобы это изменение сохранялось во всех представлениях?

(в XML есть еще что-то, но это не имеет значения):

    <ListView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_weight="1"
        android:id="@android:id/list"></ListView>

    <ViewStub android:id="@android:id/empty"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_gravity="center" android:layout="@layout/empty" />

</FrameLayout>

Ответы [ 2 ]

2 голосов
/ 29 января 2012

Вы должны поддерживать состояние экрана, используя saveInstanceState Bundle, доступный в методе onCreate().Каждый раз, когда вы меняете ориентацию экрана, вызывается onCreate().

вот пример: [CLICK]

0 голосов
/ 29 января 2012

Где вы сохраняете данные? Казалось бы, проблема в том, что вы нигде не сохраняете это, когда ваша активность уничтожена. Ваша активность может быть уничтожена при изменении ориентации, но это также может произойти, когда вы находитесь в фоновом режиме, и системе не хватает памяти.

Я предлагаю вам сохранить данные где-нибудь в вызовах onPause, onStop или onDestroy и перезагрузить их в соответствующие onResume, onStart или onCreate.

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