summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-05-13 11:59:03 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-05-13 11:59:03 +0300
commitd39e4a85a666a8a4e256b334bdf476801faea28d (patch)
tree9bc0bdaf4bc72eb6a4a69b2cb098a835b8429b2c
parentb89f4c615ffda5b85c748484766e04261b196ac8 (diff)
try keeping local articlelist with footers on headlines fragment
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java35
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java4
2 files changed, 32 insertions, 7 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 80735817..be72d52e 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
@@ -88,6 +88,8 @@ import jp.wasabeef.glide.transformations.CropCircleTransformation;
public class HeadlinesFragment extends androidx.fragment.app.Fragment implements LoaderManager.LoaderCallbacks<ArticleList> {
+ private ArticleList m_articles = new ArticleList();
+
@NonNull
@Override
public Loader<ArticleList> onCreateLoader(int id, @Nullable Bundle args) {
@@ -99,11 +101,16 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements
Log.d(TAG, "onLoadFinished loader=" + loader + " size=" + (data != null ? data.size() : "N/A (null)"));
HeadlinesLoader headlinesLoader = (HeadlinesLoader) loader;
- ArticleList sharedArticles = Application.getArticles();
+ //ArticleList sharedArticles = Application.getArticles();
// successful update
if (data != null) {
+ // shared article list contains raw returned data without footers
+ ArticleList sharedArticles = Application.getArticles();
+ sharedArticles.clear();
+ sharedArticles.addAll(data);
+
// detail activity does not use footers
if (!(m_activity instanceof DetailActivity)) {
@@ -113,10 +120,10 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements
data.add(new Article(Article.TYPE_AMR_FOOTER));
}
- DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new HeadlinesDiffutilCallback(sharedArticles, data));
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new HeadlinesDiffutilCallback(m_articles, data));
- sharedArticles.clear();
- sharedArticles.addAll(data);
+ m_articles.clear();
+ m_articles.addAll(data);
diffResult.dispatchUpdatesTo(m_adapter);
@@ -364,7 +371,10 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements
m_list.setLayoutManager(m_layoutManager);
m_list.setItemAnimator(new DefaultItemAnimator());
- m_adapter = new ArticleListAdapter(Application.getArticles());
+ m_articles.clear();
+ m_articles.addAll(Application.getArticles());
+
+ m_adapter = new ArticleListAdapter(m_articles);
m_list.setAdapter(m_adapter);
@@ -539,6 +549,21 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements
}
public void refresh(final boolean append) {
+ if (!append) {
+ m_activeArticleId = -1;
+
+ int size = m_articles.size();
+
+ m_articles.clear();
+
+ if (m_adapter != null) {
+ m_adapter.notifyItemRangeRemoved(0, size);
+
+ m_articles.add(new Article(Article.TYPE_LOADMORE));
+ m_adapter.notifyItemInserted(m_articles.size());
+ }
+ }
+
// if we try to initLoader() all the time, onLoadFinished() might be sent twice
// https://stackoverflow.com/questions/11293441/android-loadercallbacks-onloadfinished-called-twice
if (m_loader == null) {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java
index d74a58a3..5c148a35 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java
@@ -476,7 +476,7 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
// we use shared article list, but detail activity does not use special footers
// we will append those back (if needed) in onActivityResult()
- Application.getArticles().stripFooters();
+ // Application.getArticles().stripFooters();
startActivityForResult(intent, HEADLINES_REQUEST);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
@@ -523,7 +523,7 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
if (requestCode == HEADLINES_REQUEST) {
// we add back footers stripped when this was passed to DetailActivity
- Application.getArticles().add(new Article(Article.TYPE_AMR_FOOTER));
+ // Application.getArticles().add(new Article(Article.TYPE_AMR_FOOTER));
HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);