Fixed the scroll state saving.

This commit is contained in:
Karim Abou Zeid 2016-03-18 12:36:19 +01:00
commit fdf4a0f53f
3 changed files with 25 additions and 13 deletions

View file

@ -51,6 +51,7 @@ import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import hugo.weaving.DebugLog;
public class FolderFragment extends AbsMainActivityFragment implements MainActivity.MainActivityFragmentCallbacks, CabHolder, BreadCrumbLayout.SelectionCallback, SongFileAdapter.Callbacks, AppBarLayout.OnOffsetChangedListener {
public static final String TAG = FolderFragment.class.getSimpleName();
@ -89,13 +90,15 @@ public class FolderFragment extends AbsMainActivityFragment implements MainActiv
return frag;
}
@DebugLog
public void setCrumb(BreadCrumbLayout.Crumb crumb, boolean addToHistory) {
saveScrollPosition();
updateAdapter(crumb.getFile());
recyclerView.getLayoutManager().scrollToPosition(crumb.getScrollPosition());
breadCrumbs.setActiveOrAdd(crumb, false);
if (addToHistory)
breadCrumbs.addHistory(crumb);
crumb = breadCrumbs.findCrumb(crumb.getFile()); // get the real reference so we can restore previous scroll states
((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(crumb.getScrollPosition(), 0);
}
private void saveScrollPosition() {

View file

@ -38,26 +38,26 @@ public class BreadCrumbLayout extends HorizontalScrollView implements View.OnCli
public static class Crumb implements Parcelable {
public Crumb(File file) {
mFile = file;
this.file = file;
}
private final File mFile;
private int mScrollPos;
private final File file;
private int scrollPos;
public int getScrollPosition() {
return mScrollPos;
return scrollPos;
}
public void setScrollPosition(int scrollY) {
this.mScrollPos = scrollY;
this.scrollPos = scrollY;
}
public String getTitle() {
return mFile.getPath().equals("/") ? "root" : mFile.getName();
return file.getPath().equals("/") ? "root" : file.getName();
}
public File getFile() {
return mFile;
return file;
}
@Override
@ -66,6 +66,13 @@ public class BreadCrumbLayout extends HorizontalScrollView implements View.OnCli
((Crumb) o).getFile().equals(getFile());
}
@Override
public String toString() {
return "Crumb{" +
"file=" + file +
", scrollPos=" + scrollPos +
'}';
}
@Override
public int describeContents() {
@ -74,20 +81,22 @@ public class BreadCrumbLayout extends HorizontalScrollView implements View.OnCli
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeSerializable(this.mFile);
dest.writeInt(this.mScrollPos);
dest.writeSerializable(this.file);
dest.writeInt(this.scrollPos);
}
protected Crumb(Parcel in) {
this.mFile = (File) in.readSerializable();
this.mScrollPos = in.readInt();
this.file = (File) in.readSerializable();
this.scrollPos = in.readInt();
}
public static final Creator<Crumb> CREATOR = new Creator<Crumb>() {
@Override
public Crumb createFromParcel(Parcel source) {
return new Crumb(source);
}
@Override
public Crumb[] newArray(int size) {
return new Crumb[size];
}