如何在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