0

在我的 OnCreate 方法中,我正在进行网络调用并使用结果填充列表视图。我将结果保存在 ArrayList 中并使用 ArrayList 填充列表视图。如果用户按下后退按钮并重新进入活动,我想将 ArrayLists 存储在 SavedInstanceState Bundle 中,并使用存储的 ArrayLists 填充 ListView,而不是再次进行网络调用。以下是我的 OnCreate 代码:

      if (savedInstanceState != null) {

      largeImage = savedInstanceState.getParcelableArrayList("Image");
      flowercode = savedInstanceState.getStringArrayList("Code");
      flowerprice = savedInstanceState.getStringArrayList("Price");
      flowerdimensions = savedInstanceState.getStringArrayList("Dimension");
      largeImageText = savedInstanceState.getStringArrayList("Imagetext");

        ListView listView = (ListView) findViewById(R.id.LowRomance);
        FlowerShopAdapter listAdapter = new FlowerShopAdapter(this, flowercode, flowerName, flowerprice, largeImage, flowerdimensions);
        listView.setAdapter(listAdapter);

    } else if(savedInstanceState == null) {

            makesoapcall();

        }
    }

这是我的 OnSaveInstanceState 代码

   public void onSaveInstanceState(Bundle savedInstanceState) {
   savedInstanceState.putParcelableArrayList("Image", largeImage);
   savedInstanceState.putStringArrayList("Code", flowercode);
   savedInstanceState.putStringArrayList("Price", flowerprice);
   savedInstanceState.putStringArrayList("Dimension", flowerdimensions);

   super.onSaveInstanceState(savedInstanceState);

   }

目前我的应用程序每次都进行网络调用。他们是我需要实施的其他东西才能使其正常工作,还是我目前尝试实施的方式是错误的?当我将 ArrayList 放入 saveInstanceState 时,它​​们绝对不为空。

4

1 回答 1

0

onSaveInstanceState()在 Activity 上按下后退按钮时不应调用。当 Android 决定销毁 Activity 时调用它。

例如,当方向改变时。

您在这里需要的是SharedPreferences。将ArrayLists使用 SharedPreferences 存储在onStop(). 并把它放进去onStart()以下是如何在 SharedPreferences 中存储 ArrayList。

于 2015-03-10T17:45:19.923 回答