Save the scroll position when moving between folders. REstore scroll position

This commit is contained in:
masensio 2014-04-03 14:36:55 +02:00
parent 901b6ac61e
commit 20e3a5f420

View file

@ -74,6 +74,10 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName
private Handler mHandler;
private OCFile mTargetFile;
private ArrayList<Integer> mIndexes;
private ArrayList<Integer> mTops;
/**
* {@inheritDoc}
*/
@ -107,6 +111,10 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName
mHandler = new Handler();
mIndexes = new ArrayList<Integer>();
mTops = new ArrayList<Integer>();
}
/**
@ -118,7 +126,6 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName
outState.putParcelable(EXTRA_FILE, mFile);
}
/**
* Call this, when the user presses the up button.
*
@ -156,11 +163,36 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName
listDirectory(mFile);
mContainerActivity.startSyncFolderOperation(mFile);
// restore index and position
restoreIndexAndPosition();
} // else - should never happen now
return moveCount;
}
/*
* Restore index and position
*/
private void restoreIndexAndPosition() {
int index = mIndexes.get(mIndexes.size() - 1);
mIndexes.remove(mIndexes.size() - 1);
int top = mTops.get(mTops.size() - 1);
mTops.remove(mTops.size() - 1);
mList.setSelectionFromTop(index, top);
}
/*
* Save index and top position
*/
private void saveIndexAndPosition(int index) {
mIndexes.add(index);
View view = mList.getChildAt(0);
mTops.add( (view == null) ? 0 : view.getTop() );
}
@Override
public void onItemClick(AdapterView<?> l, View v, int position, long id) {
OCFile file = (OCFile) mAdapter.getItem(position);
@ -171,6 +203,9 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName
// then, notify parent activity to let it update its state and view, and other fragments
mContainerActivity.onBrowsedDownTo(file);
// save index and top position
saveIndexAndPosition(position);
} else { /// Click on a file
if (PreviewImageFragment.canBePreviewed(file)) {
// preview image - it handles the download, if needed