如何在onSaveInstanceState中保存ArrayAdapter?

时间:2012-06-19 14:39:41

标签: android android-activity android-arrayadapter

我正在做一个信使应用程序,对于消息历史记录,我使用ArrayAdapter创建了一个ListView。我有一个服务来做消息传递活动,所以即使用户正在与其他东西进行交互,它也应该收到消息。然而,当我按下主页按钮后返回应用程序时,我得到一个空列表视图,这对我的应用程序来说是一个奇怪的事情。我试图在onsavingInstance中保存适配器,但它不能正常工作,因为它不是可串行的。请帮助我,我怎么能保留我的列表视图。下面是我的代码的一些补丁。

// Array adapter for the conversation thread
private ArrayAdapter<String> mConversationArrayAdapter;

private ListView mConversationView;
// Initialize the array adapter for the conversation thread

mConversationArrayAdapter = new ArrayAdapter<String>(this, R.layout.message);
mConversationView = (ListView) findViewById(R.id.in);
mConversationView.setAdapter(mConversationArrayAdapter);

/** 
 * save the listView 

protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putSerializable("mArrayAdapter",  (Serializable) mConversationArrayAdapter);
    Toast.makeText(this, "History saved.", Toast.LENGTH_SHORT).show();
    }
 */


public void onStart(Bundle savedInstanceState) {
    super.onStart();
    if(D) Log.e(TAG, "++ ON START ++");
   // if (savedInstanceState != null) {
  //    mConversationArrayAdapter = (ArrayAdapter<String>) savedInstanceState.getSerializable("mArrayAdapter");
  //  }
    setupChat();
}

1 个答案:

答案 0 :(得分:-1)

onSaveInstanceState不是保存持久数据的地方......事实上,它甚至可能都没有被调用。

我建议您在ArrayAdapter填充onResume并将其保存在onPause