Основное действие имеет кнопка «To ListView», которая запускает новое действие со списком. Каждый раз, когда этот новый актив загружается, он вызывает метод AsyncTask()
, который извлекает некоторый JSON удаленно, анализирует его и привязывает данные к списку. Затем вызывается setContentView()
(в onPostExecute()
) для отображения пользовательского интерфейса. Как сохранить данные вида списка или, по крайней мере, массив данных (для перезаписи) при последующих запусках этого действия, чтобы ASyncTask() не нужно было вызывать каждый раз?Сохранение ListView при последующих запусках активности
ASyncTask()
следует вызывать только в начале (и только до тех пор, пока приложение не будет принудительно завершено), последующие вызовы должны выполняться вручную пользователем, возможно, с событием onClick()
. Я попытался установить boolean
для этой цели, но если да, то как отобразить предыдущее состояние списка, когда boolean
является ложным? Я также рассмотрел onResume()
и onBackPressed()
, но они, похоже, не очень актуальны.
Main.java
:
toListView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent myIntent = new Intent(getApplicationContext(), ListView.class);
startActivity(myIntent);
}
});
ListView.java
:
public class ListView extends ActionBarActivity {
private static boolean isFirstLaunch = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (isFirstLaunch) {
// execute the ASyncTask();
isFirstLaunch = false;
}
// else display previous listview data or last activity state
}// onCreate()
Почему бы не сохранить последние данные списка в SharedPreferences? – bwegs
@bwegs SharedPreferences не принимает массивы, плюс мой - один из 'SpannedString'. –
См. Http://stackoverflow.com/a/7057858/745750 – bwegs