Запретить сохранение активности из состояния, когда пользователь нажимает кнопку «Назад» - PullRequest
2 голосов
/ 03 мая 2010

У меня есть Activity со списком, который связан с ListAdapter, считывающим данные в ArrayList из базы данных. Все хорошо, когда данные впервые загружены. Пока действие открыто и список отображается, вполне возможно, что данные в базе данных будут обновлены службой, но список не отражает изменения, поскольку ArrayList не знает об изменениях. Если действие больше не находится на переднем плане, как в случае, если пользователь переходит на главный экран, а затем возвращается на передний план, я хотел бы, чтобы действие не отображало то, что было сделано ранее, а скорее перезагрузило данные с ListAdapter, с которым связано представление. Я думаю, что-то должно вызывать финиш (), но я не уверен, что. Это то, что у меня есть в Деятельности.

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setUpViews();
app = (MyApplication) getApplication();
adapter = new MyListAdapter(this, app.getMyEvents());
setListAdapter(adapter);
}
@Override
protected void onResume() {
super.onResume();
adapter.forceReload();
}

1 Ответ

2 голосов
/ 03 мая 2010

У меня есть активность со списком, который привязан к данным чтения ListAdapter в ArrayList из базы данных.

Почему бы не использовать CursorAdapter вместо чтения всего в ArrayAdapter?

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

Если вы используете CursorAdapter, вы можете просто позвонить requery() на Cursor, и ваш список обновится с последним содержимым базы данных. Вы можете сделать это, например, в onStart(), и это будет срабатывать всякий раз, когда пользователь возвращается к активности - с домашнего экрана, с входящего телефонного звонка, который он принял, и т. Д.

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