summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-05-14 07:54:48 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-05-14 07:54:48 +0300
commit6f42b0904207789ba3e7cc9b51e82bc8b1d7f1d7 (patch)
tree7475a5f69f768e75ed1bd36a933451cc3f1f4668
parentc60baf17c56607917a35aea4d012a84e93b6cfbd (diff)
move lazyload to onScrolled() but lock it on fragment side
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java25
1 files changed, 17 insertions, 8 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
index c18fd9d5..bd80b112 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
@@ -89,6 +89,7 @@ import jp.wasabeef.glide.transformations.CropCircleTransformation;
public class HeadlinesFragment extends androidx.fragment.app.Fragment implements LoaderManager.LoaderCallbacks<ArticleList> {
private ArticleList m_articles = new ArticleList();
+ private boolean m_isLazyLoading;
@NonNull
@Override
@@ -147,6 +148,8 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements
if (m_swipeLayout != null)
m_swipeLayout.setRefreshing(false);
+
+ m_isLazyLoading = false;
}
@Override
@@ -473,12 +476,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements
new Handler().postDelayed(() -> m_activity.refresh(false), 100);
}
}
-
- int lastVisibleItem = m_layoutManager.findLastVisibleItemPosition();
-
- if (lastVisibleItem >= Application.getArticles().size() - 5) {
- new Handler().postDelayed(() -> refresh(true), 0);
- }
}
}
@@ -508,8 +505,12 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements
}
}
- /* if (lastVisibleItem >= Application.getArticles().size() - 5)
- new Handler().postDelayed(() -> refresh(true), 1000); */
+ if (!m_isLazyLoading && lastVisibleItem >= Application.getArticles().size() - 5) {
+ m_isLazyLoading = true;
+
+ // this has to be dispatched delayed, consequent adapter updates are forbidden in scroll handler
+ new Handler().postDelayed(() -> refresh(true), 0);
+ }
}
});
@@ -528,6 +529,14 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements
syncToSharedArticles();
+ // we only set this in detail activity
+ if (m_activeArticleId > 0) {
+ Article activeArticle = Application.getArticles().getById(m_activeArticleId);
+
+ if (activeArticle != null)
+ scrollToArticle(activeArticle);
+ }
+
m_activity.invalidateOptionsMenu();
}