diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java index 9689c7aa6..dc61d2065 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java @@ -1177,7 +1177,7 @@ public class FavoritesScene extends BaseScene implements private class FavoritesHelper extends GalleryInfoContentHelper { public int pgCounter = 0; - public String nextPg = ""; + public String nextPg = null; @Override protected void getPageData(final int taskId, int type, int page) { @@ -1301,5 +1301,11 @@ public class FavoritesScene extends BaseScene implements } } } + + @Override + protected void onClearData() { + super.onClearData(); + nextPg = null; + } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index ab3cb45fc..29ebe0534 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -1706,6 +1706,8 @@ public final class GalleryListScene extends BaseScene if (page != 0) mUrlBuilder.setNextGid(minGid); + else + mUrlBuilder.setNextGid(0); if (ListUrlBuilder.MODE_IMAGE_SEARCH == mUrlBuilder.getMode()) { EhRequest request = new EhRequest(); request.setMethod(EhClient.METHOD_IMAGE_SEARCH); diff --git a/app/src/main/java/com/hippo/ehviewer/widget/GalleryInfoContentHelper.java b/app/src/main/java/com/hippo/ehviewer/widget/GalleryInfoContentHelper.java index 114a97c01..8241cd7b1 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/GalleryInfoContentHelper.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/GalleryInfoContentHelper.java @@ -86,6 +86,8 @@ public abstract class GalleryInfoContentHelper extends ContentLayout.ContentHelp @Override protected void onClearData() { map.clear(); + maxGid = -1; + minGid = -1; } @Override diff --git a/app/src/main/java/com/hippo/widget/ContentLayout.java b/app/src/main/java/com/hippo/widget/ContentLayout.java index 40783599e..53fb432c6 100644 --- a/app/src/main/java/com/hippo/widget/ContentLayout.java +++ b/app/src/main/java/com/hippo/widget/ContentLayout.java @@ -451,48 +451,22 @@ public class ContentLayout extends FrameLayout { switch (mCurrentTaskType) { case TYPE_REFRESH: - mStartPage = 0; - mEndPage = 1; mPages = pages; mNextPage = nextPage; - mPageDivider.clear(); mPageDivider.add(data.size()); if (data.isEmpty()) { - mData.clear(); - onClearData(); notifyDataSetChanged(); - - if (true || mEndPage >= mPages) { // Not found - // Ui change, show empty string - mRefreshLayout.setRefreshing(false); - mBottomProgress.hide(); - showEmptyString(); - } else { - // Ui change, show progress bar - mRefreshLayout.setRefreshing(false); - mBottomProgress.hide(); - showProgressBar(); - - // Get next page - mCurrentTaskId = mIdGenerator.nextId(); - mCurrentTaskType = TYPE_NEXT_PAGE_KEEP_POS; - mCurrentTaskPage = mEndPage; - getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage); - } + mRefreshLayout.setRefreshing(false); + mBottomProgress.hide(); + showEmptyString(); } else { - mData.clear(); - onClearData(); mData.addAll(data); onAddData(data); notifyDataSetChanged(); - - // Ui change, show content mRefreshLayout.setRefreshing(false); mBottomProgress.hide(); showContent(); - - // RecyclerView scroll if (mRecyclerView.isAttachedToWindow()) { mRecyclerView.stopScroll(); LayoutManagerUtils.scrollToPositionWithOffset(mRecyclerView.getLayoutManager(), 0, 0); @@ -513,33 +487,24 @@ public class ContentLayout extends FrameLayout { // assert mStartPage >= 0 if (data.isEmpty()) { - if (true || mStartPage <= 0) { // OK, that's all - if (mData.isEmpty()) { - // Ui change, show empty string - mRefreshLayout.setRefreshing(false); - mBottomProgress.hide(); - showEmptyString(); - } else { - // Ui change, show content - mRefreshLayout.setRefreshing(false); - mBottomProgress.hide(); - showContent(); - - if (mCurrentTaskType == TYPE_PRE_PAGE && mRecyclerView.isAttachedToWindow()) { - // RecyclerView scroll, to top - mRecyclerView.stopScroll(); - LayoutManagerUtils.scrollToPositionWithOffset(mRecyclerView.getLayoutManager(), 0, 0); - onScrollToPosition(0); - } - } + // OK, that's all + if (mData.isEmpty()) { + // Ui change, show empty string + mRefreshLayout.setRefreshing(false); + mBottomProgress.hide(); + showEmptyString(); } else { - // Keep UI + // Ui change, show content + mRefreshLayout.setRefreshing(false); + mBottomProgress.hide(); + showContent(); - // Get previous - mCurrentTaskId = mIdGenerator.nextId(); - // Keep mCurrentTaskType - mCurrentTaskPage = mStartPage - 1; - getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage); + if (mCurrentTaskType == TYPE_PRE_PAGE && mRecyclerView.isAttachedToWindow()) { + // RecyclerView scroll, to top + mRecyclerView.stopScroll(); + LayoutManagerUtils.scrollToPositionWithOffset(mRecyclerView.getLayoutManager(), 0, 0); + onScrollToPosition(0); + } } } else { mData.addAll(0, data); @@ -576,33 +541,24 @@ public class ContentLayout extends FrameLayout { mPages = Math.max(mEndPage, pages); if (data.isEmpty()) { - if (true || mEndPage >= mPages) { // OK, that's all - if (mData.isEmpty()) { - // Ui change, show empty string - mRefreshLayout.setRefreshing(false); - mBottomProgress.hide(); - showEmptyString(); - } else { - // Ui change, show content - mRefreshLayout.setRefreshing(false); - mBottomProgress.hide(); - showContent(); - - if (mCurrentTaskType == TYPE_NEXT_PAGE && mRecyclerView.isAttachedToWindow()) { - // RecyclerView scroll - mRecyclerView.stopScroll(); - LayoutManagerUtils.scrollToPositionWithOffset(mRecyclerView.getLayoutManager(), oldDataSize, 0); - onScrollToPosition(oldDataSize); - } - } + // OK, that's all + if (mData.isEmpty()) { + // Ui change, show empty string + mRefreshLayout.setRefreshing(false); + mBottomProgress.hide(); + showEmptyString(); } else { - // Keep UI + // Ui change, show content + mRefreshLayout.setRefreshing(false); + mBottomProgress.hide(); + showContent(); - // Get next page - mCurrentTaskId = mIdGenerator.nextId(); - // Keep mCurrentTaskType - mCurrentTaskPage = mEndPage; - getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage); + if (mCurrentTaskType == TYPE_NEXT_PAGE && mRecyclerView.isAttachedToWindow()) { + // RecyclerView scroll + mRecyclerView.stopScroll(); + LayoutManagerUtils.scrollToPositionWithOffset(mRecyclerView.getLayoutManager(), oldDataSize, 0); + onScrollToPosition(oldDataSize); + } } } else { mData.addAll(data); @@ -639,23 +595,11 @@ public class ContentLayout extends FrameLayout { onClearData(); notifyDataSetChanged(); - if (true || mEndPage >= mPages) { // Not found - // Ui change, show empty string - mRefreshLayout.setRefreshing(false); - mBottomProgress.hide(); - showEmptyString(); - } else { - // Ui change, show progress bar - mRefreshLayout.setRefreshing(false); - mBottomProgress.hide(); - showProgressBar(); - - // Get next page - mCurrentTaskId = mIdGenerator.nextId(); - mCurrentTaskType = TYPE_NEXT_PAGE_KEEP_POS; - mCurrentTaskPage = mEndPage; - getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage); - } + // Not found + // Ui change, show empty string + mRefreshLayout.setRefreshing(false); + mBottomProgress.hide(); + showEmptyString(); } else { mData.clear(); onClearData(); @@ -804,6 +748,12 @@ public class ContentLayout extends FrameLayout { } private void doRefresh() { + mStartPage = 0; + mEndPage = 1; + mPages = 0; + mPageDivider.clear(); + mData.clear(); + onClearData(); mCurrentTaskId = mIdGenerator.nextId(); mCurrentTaskType = TYPE_REFRESH; mCurrentTaskPage = 0;