当我在ListView中选择一个项目时,如何保存ListView的滚动位置,并且我想在同一个ListView中返回.
假设我们有两个片段 – ListFragment和SomeOtherFragment.我们用SomeOtherFragment替换ListFragment.
FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.content_frame,fragment); transaction.addToBackStack(null); transaction.commit();
解决方法
我知道最好的解决方案
//将ListView状态(=包括滚动位置)保存为Parcelable
Parcelable state = listView.onSaveInstanceState();
//恢复以前的状态(包括选定的项目索引和滚动位置)
listView.onRestoreInstanceState(state);
即使在将适配器设置为 – 后,您也可以恢复上次保存的位置 –
// Save the ListView state (= includes scroll position) as a Parceble Parcelable state = listView.onSaveInstanceState(); // e.g. set new items listView.setAdapter(adapter); // Restore prevIoUs state (including selected item index and scroll position) listView.onRestoreInstanceState(state);
您还可以参考here了解更多详情.