如何在ListView
位于ListFragment
内时保存ListView
的滚动位置?ListView中的片段不能保存滚动位置
4
A
回答
19
我终于解决了这个问题,所以我决定发布对他人的解决方案:
在我的ListFragment子类我声明两个int变量来保存滚动位置
public static class MyListFragment extends ListFragment {
......................
......................
private int index = -1;
private int top = 0;
......................
然后覆盖onPause()和onResume()来保存和恢复ListView
的滚动位置,如下所示:
@Override
public void onResume() {
super.onResume();
......................
......................
setListAdapter(mAdapter);
if(index!=-1){
this.getListView().setSelectionFromTop(index, top);
}
......................
......................
}
@Override
public void onPause() {
super.onPause();
try{
index = this.getListView().getFirstVisiblePosition();
View v = this.getListView().getChildAt(0);
top = (v == null) ? 0 : v.getTop();
}
catch(Throwable t){
t.printStackTrace();
}
......................
......................
}
就是这样!我希望这对一个人有帮助。 :)
0
尝试
listView.getFirstVisiblePosition()
2
我认为你的解决方案适用于触摸模式,但对我来说这还不够。我需要得到在同一所选项目的选择,而不是第一个可见:
@Override
public void onStop() {
super.onStop();
ListView listView = this.getListView();
lastPosition = listView.getSelectedItemPosition();
int lastPositionInGroup = lastPosition - listView.getFirstVisiblePosition();
lastTop = listView.getChildAt(lastPositionInGroup).getTop();
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
/* cursor adapter stuff here */
if (lastPosition != AdapterView.INVALID_POSITION) {
listView.setSelectionFromTop(
lastPosition,
lastTop != AdapterView.INVALID_POSITION ? lastTop : 0
);
}
}
0
@Override
public void onResume()
{
super.onResume();
if(CommonVariables.firstsel==6)
{
swipelistview.setAdapter(adapter_ct);
swipelistview.setSelection(CommonVariables.index);
}
}
@Override
public void onPause()
{
super.onPause();
try
{
CommonVariables.firstsel=6;
CommonVariables.index = Fragmentct.swipelistview.getFirstVisiblePosition()+1;
Toast.makeText(getActivity(),"onPause"+CommonVariables.index,1500).show();
}
catch(Throwable t){
t.printStackTrace();
}
}
相关问题
- 1. 如何保存ListView的滚动位置
- 2. 滚动型的片段保留位置
- 3. Listview滚动位置不保存导航后退按钮
- 4. 保存滚动位置
- 5. 保存emberJS中的滚动位置
- 6. 滚动位置不保存在Grdiview
- 7. 如何保存使用CursorAdapter的ListView的滚动位置?
- 8. 我如何保存滚动条的位置为我的ListView
- 9. Android ListView在片段不滚动
- 10. 获取ListView中滚动条的位置(不是位置条目)
- 11. 返回ListView时维护/保存/恢复滚动位置
- 12. Android ListView滚动到位置
- 13. ListView获取滚动位置?
- 14. Jquerymobile Scrollview在滚动后返回到原始位置。不保存滚动位置
- 15. 当主要活动具有滚动视图时,片段中的ListView不滚动
- 16. 如何在android listview中保持滚动条的位置?
- 17. Android ListView - 滚动列表保持焦点不变位置
- 18. 如何在滚动视图中保存滚动位置?
- 19. DataTables保存状态滚动位置
- 20. jquery mobile - 保存滚动位置
- 21. ReturnUrl并保存滚动位置?
- 22. 保存滚动条状态/位置
- 23. UITableViewCell中的滚动视图不会保存位置
- 24. UWP - ListView滚动 - 不会停留在滚动位置
- 25. Android获取ListView中滚动位置的确切位置
- 26. 根据滚动条位置保持div的滚动位置
- 27. ListView在滚动上的位置
- 28. ListView在滚动后的列表位置
- 29. 以编程方式在ListView中设置位置而不滚动
- 30. 在更改ListView控件的布局时保留滚动位置
不要你需要有setRetainInstance(真),以便能够保持整数那里的片段? – 2013-01-29 10:33:29
但我onPause和onResume语句没有工作 – Vikky 2013-06-27 09:55:08
为什么你捕捉'Throwable'? – 2014-04-11 03:01:16