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.Bind;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import hugo.weaving.DebugLog;
public class FolderFragment extends AbsMainActivityFragment implements MainActivity.MainActivityFragmentCallbacks, CabHolder, BreadCrumbLayout.SelectionCallback, SongFileAdapter.Callbacks, AppBarLayout.OnOffsetChangedListener { public class FolderFragment extends AbsMainActivityFragment implements MainActivity.MainActivityFragmentCallbacks, CabHolder, BreadCrumbLayout.SelectionCallback, SongFileAdapter.Callbacks, AppBarLayout.OnOffsetChangedListener {
public static final String TAG = FolderFragment.class.getSimpleName(); public static final String TAG = FolderFragment.class.getSimpleName();
@ -89,13 +90,15 @@ public class FolderFragment extends AbsMainActivityFragment implements MainActiv
return frag; return frag;
} }
@DebugLog
public void setCrumb(BreadCrumbLayout.Crumb crumb, boolean addToHistory) { public void setCrumb(BreadCrumbLayout.Crumb crumb, boolean addToHistory) {
saveScrollPosition(); saveScrollPosition();
updateAdapter(crumb.getFile()); updateAdapter(crumb.getFile());
recyclerView.getLayoutManager().scrollToPosition(crumb.getScrollPosition());
breadCrumbs.setActiveOrAdd(crumb, false); breadCrumbs.setActiveOrAdd(crumb, false);
if (addToHistory) if (addToHistory)
breadCrumbs.addHistory(crumb); 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() { private void saveScrollPosition() {

View file

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

View file

@ -3,7 +3,7 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:2.1.0-alpha1' classpath 'com.android.tools.build:gradle:2.1.0-alpha3'
classpath 'com.github.triplet.gradle:play-publisher:1.1.3' classpath 'com.github.triplet.gradle:play-publisher:1.1.3'
} }
} }