save and restore the lists scroll state

This commit is contained in:
tibbi 2016-10-16 17:02:19 +02:00
parent b45e526fa7
commit 61dee85c0d

View File

@ -9,6 +9,7 @@ import android.graphics.Color;
import android.media.MediaScannerConnection; import android.media.MediaScannerConnection;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
@ -46,7 +47,9 @@ import java.io.FileFilter;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
@ -60,6 +63,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
@BindView(R.id.items_holder) CoordinatorLayout mCoordinatorLayout; @BindView(R.id.items_holder) CoordinatorLayout mCoordinatorLayout;
public static final int SELECT_FOLDER_REQUEST = 1; public static final int SELECT_FOLDER_REQUEST = 1;
private static Map<String, Parcelable> mStates;
private List<FileDirItem> mItems; private List<FileDirItem> mItems;
private ItemInteractionListener mListener; private ItemInteractionListener mListener;
@ -84,6 +88,8 @@ public class ItemsFragment extends android.support.v4.app.Fragment
@Override @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
if (mStates == null)
mStates = new HashMap<>();
mShowHidden = Config.newInstance(getContext()).getShowHidden(); mShowHidden = Config.newInstance(getContext()).getShowHidden();
mItems = new ArrayList<>(); mItems = new ArrayList<>();
mToBeDeleted = new ArrayList<>(); mToBeDeleted = new ArrayList<>();
@ -104,6 +110,7 @@ public class ItemsFragment extends android.support.v4.app.Fragment
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
deleteItems(); deleteItems();
mStates.put(mPath, mListView.onSaveInstanceState());
} }
private void fillItems() { private void fillItems() {
@ -122,6 +129,10 @@ public class ItemsFragment extends android.support.v4.app.Fragment
mListView.setOnItemClickListener(this); mListView.setOnItemClickListener(this);
mListView.setMultiChoiceModeListener(this); mListView.setMultiChoiceModeListener(this);
mListView.setOnTouchListener(this); mListView.setOnTouchListener(this);
if (mStates != null && mStates.get(mPath) != null) {
mListView.onRestoreInstanceState(mStates.get(mPath));
}
} }
public void setListener(ItemInteractionListener listener) { public void setListener(ItemInteractionListener listener) {