summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-05-13 10:59:56 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-05-13 10:59:56 +0300
commit485356be541de32c2eb827c9ce49d40f4497d0b3 (patch)
tree03d5b4604aef1110305c397f5ec82fc738c9766a
parent589825304449c841f577845e37dfca64fe054396 (diff)
handle adapter state in selection without notifydatasetchanged
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java26
1 files changed, 15 insertions, 11 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 aa7cdddf..4956d37e 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
@@ -1451,20 +1451,24 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements
public void setSelection(ArticlesSelection select) {
ArticleList articlesWithoutFooters = Application.getArticles().getWithoutFooters();
- for (Article a : articlesWithoutFooters)
- a.selected = false;
+ for (Article a : articlesWithoutFooters) {
+ if (select == ArticlesSelection.ALL || select == ArticlesSelection.UNREAD && a.unread) {
+ a.selected = true;
- if (select != ArticlesSelection.NONE) {
- for (Article a : articlesWithoutFooters) {
- if (select == ArticlesSelection.ALL || select == ArticlesSelection.UNREAD && a.unread) {
- a.selected = true;
- }
+ int position = Application.getArticles().getPositionById(a.id);
+
+ if (position != -1)
+ m_adapter.notifyItemChanged(position);
+
+ } else if (a.selected) {
+ a.selected = false;
+
+ int position = Application.getArticles().getPositionById(a.id);
+
+ if (position != -1)
+ m_adapter.notifyItemChanged(position);
}
}
-
- if (m_adapter != null) {
- m_adapter.notifyDataSetChanged();
- }
}
public int getActiveArticleId() {