我有一个Android应用程序和一个列表视图,当用户按下按钮时更新列表视图。该应用程序有两个操作栏选项卡。当我在标签之间切换时,旋转屏幕或者按回退出活动,列表视图中的所有数据都会消失。我需要数据保留。我知道,至少在方向更改时,我可以将数据保存在onSaveInstanceState()中。所以我在savedInstanceState中保存一个String [],并在onCreateView()中检索String []。这似乎工作正常,它正确读取数据。然后我尝试更新列表视图。这似乎也读取数据并正常工作,只有listview不会更新,而是保持空白。我对这个代码是:恢复ListView数据,ListView不显示数据
if (savedInstanceState != null) {
lvArray = savedInstanceState.getStringArray("lvArray");
setupListView();
} else {
lvArray= new String[LISTVIEW_LIMIT];
for (int i = 0; i < LISTVIEW_LIMIT; i++) {
lvArray[i] = " ";
}
setupListView();
}
private void setupListView() {
if (listview.getAdapter() == null) {
ArrayAdapter<String> listviewAdapter = new ArrayAdapter<String>(getActivity().getApplicationContext(), android.R.layout.simple_list_item_1, lvArray);
listview.setAdapter(listviewAdapter);
}
registerForContextMenu(listview);
}
因此,正如我说的,我通过这个,它正确地读取数据,它建立在数据的ArrayAdapter,并设置适配器的列表视图。这一切似乎工作,只是它并没有实际更新它。我知道那里的所有数据,但仍然无法使用?
此外,我有能力将列表视图设置为不同的大小(通过LISTVIEW_LIMIT)。这工作正常,除了它也删除已经在列表视图中的所有数据。如何在限制更改时保留数据而不是重新创建数组?
什么是最好的方法来保存onPause()或onStop(),这样我可以保持列表视图,即使按回或切换选项卡?
编辑:改为使用notifyDataSetChanged(),仍然没有工作:
可能重复的[如何刷新Android列表视图?](http://stackoverflow.com/questions/2250770/how-to-refresh-android-listview) – adatapost