diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/FolderFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/FolderFragment.java index 0ef4211d..8fbafb3a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/FolderFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/FolderFragment.java @@ -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() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/views/BreadCrumbLayout.java b/app/src/main/java/com/kabouzeid/gramophone/views/BreadCrumbLayout.java index 48d75f26..d5dccff9 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/views/BreadCrumbLayout.java +++ b/app/src/main/java/com/kabouzeid/gramophone/views/BreadCrumbLayout.java @@ -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 CREATOR = new Creator() { + @Override public Crumb createFromParcel(Parcel source) { return new Crumb(source); } + @Override public Crumb[] newArray(int size) { return new Crumb[size]; } diff --git a/build.gradle b/build.gradle index dcb0a9d2..63e82c6a 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } 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' } }