在后续活动启动时保留ListView

时间:2015-03-18 18:42:28

标签: android listview

主活动有一个“To ListView”按钮,用于启动带有列表视图的新活动。每次加载此新活动时,它都会调用AsyncTask()方法,该方法远程检索某些JSON,对其进行解析,并将数据绑定到列表视图。然后,调用setContentView()(在onPostExecute()中)以显示UI。如何在后续启动该活动时保留列表视图数据,或至少保留数据数组(用于重新绑定),以便不必每次都调用ASyncTask()?

ASyncTask()只应在开始时调用(而不是在强制终止应用程序之前),后续调用应该由用户手动完成,可能是onClick()事件。我已经尝试为此目的设置boolean,但如果是,那么当boolean为false时如何显示列表视图的先前状态?我也研究过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()

1 个答案:

答案 0 :(得分:1)

要在Android应用程序中保留数据,您有两个明显的选择。

  • 使用SQLite数据库。如果您有大量数据需要管理,排序和维护,那么这种替代方案很有用。例如,如果您的JSON响应包含大量数据,那么将其保存到数据库将是一个很好的解决方案。然后,您只需查询数据库,而不是重复执行AsyncTask。 Vogella就此事提供an excellent tutorial
  • 使用SharedPerefences。如果您只有几个变量需要,这种替代方案会更好。在SharedPreferences中存储数据可以减轻您为应用程序设计和实现数据库支持所需的工作。请参阅官方文档以供参考。