private Handler mHandler;
private OCFile mTargetFile;
+
+ private ArrayList<Integer> mIndexes;
+ private ArrayList<Integer> mTops;
+
/**
* {@inheritDoc}
throw new ClassCastException(activity.toString() + " must implement " + OCFileListFragment.ContainerActivity.class.getSimpleName());
}
}
-
-
+
+
/**
* {@inheritDoc}
*/
getListView().setOnCreateContextMenuListener(this);
mHandler = new Handler();
+
+ mIndexes = new ArrayList<Integer>();
+ mTops = new ArrayList<Integer>();
+
}
super.onSaveInstanceState(outState);
outState.putParcelable(EXTRA_FILE, mFile);
}
-
-
+
/**
* Call this, when the user presses the up button.
*
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);
// 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