Fixed the scroll state saving.
This commit is contained in:
parent
5dc61b64ca
commit
fdf4a0f53f
3 changed files with 25 additions and 13 deletions
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue