diff options
| author | Andrew Dolgov <fox@fakecake.org> | 2025-05-13 11:59:03 +0300 |
|---|---|---|
| committer | Andrew Dolgov <fox@fakecake.org> | 2025-05-13 11:59:03 +0300 |
| commit | d39e4a85a666a8a4e256b334bdf476801faea28d (patch) | |
| tree | 9bc0bdaf4bc72eb6a4a69b2cb098a835b8429b2c | |
| parent | b89f4c615ffda5b85c748484766e04261b196ac8 (diff) | |
try keeping local articlelist with footers on headlines fragment
| -rwxr-xr-x | org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java | 35 | ||||
| -rwxr-xr-x | org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java | 4 |
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); |