summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java58
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java12
2 files changed, 36 insertions, 34 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 4fea0774..06112db0 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
@@ -211,10 +211,14 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
if (info != null) {
- Article article = getArticleAtPosition(info.position);
+ try {
+ Article article = Application.getArticles().get(info.position);
- if (!onArticleMenuItemSelected(item, article, info.position))
- return super.onContextItemSelected(item);
+ if (!onArticleMenuItemSelected(item, article, info.position))
+ return super.onContextItemSelected(item);
+ } catch (IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ }
}
return super.onContextItemSelected(item);
@@ -313,10 +317,14 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
int position = viewHolder.getBindingAdapterPosition();
- Article article = getArticleAtPosition(position);
+ try {
+ Article article = Application.getArticles().get(position);
- if (article == null || article.id < 0)
+ if (article == null || article.id < 0)
+ return 0;
+ } catch (IndexOutOfBoundsException e) {
return 0;
+ }
return super.getSwipeDirs(recyclerView, viewHolder);
}
@@ -327,7 +335,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
final int adapterPosition = viewHolder.getBindingAdapterPosition();
try {
- final Article article = getArticleAtPosition(adapterPosition);
+ final Article article = Application.getArticles().get(adapterPosition);
final boolean wasUnread;
if (article != null && article.id > 0) {
@@ -341,7 +349,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
}
Application.getArticles().remove(adapterPosition);
- m_adapter.notifyDataSetChanged();
+ m_adapter.notifyItemRemoved(adapterPosition);
Snackbar.make(m_list, R.string.headline_undo_row_prompt, Snackbar.LENGTH_LONG)
.setAction(getString(R.string.headline_undo_row_button), v -> {
@@ -404,12 +412,16 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
if (m_prefs.getBoolean("headlines_mark_read_scroll", false)) {
for (int i = 0; i < firstVisibleItem; i++) {
- Article article = getArticleAtPosition(i);
+ try {
+ Article article = Application.getArticles().get(i);
- if (article.unread && !m_readArticles.contains(article)) {
- Log.d(TAG, "adding to mark read=" + article.title);
+ if (article.unread && !m_readArticles.contains(article)) {
+ Log.d(TAG, "adding to mark read=" + article.title);
- m_readArticles.add(article);
+ m_readArticles.add(article);
+ }
+ } catch (IndexOutOfBoundsException e) {
+ e.printStackTrace();
}
}
}
@@ -1509,7 +1521,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
}
public void scrollToArticle(Article article) {
- m_list.scrollToPosition(getArticlePositionById(article.id));
+ m_list.scrollToPosition(Application.getArticles().getById(article.id));
}
public void setActiveArticle(Article article) {
@@ -1539,32 +1551,10 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
}
}
- public Article getArticleAtPosition(int position) {
- try {
- return Application.getArticles().get(position);
- } catch (IndexOutOfBoundsException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- return null;
- }
-
public Article getActiveArticle() {
return m_activeArticle;
}
- public int getArticlePositionById(int id) {
- for (int i = 0; i < Application.getArticles().size(); i++) {
- if (Application.getArticles().get(i).id == id) {
- return i;
- }
- }
-
- return -1;
- }
-
public String getSearchQuery() {
return m_searchQuery;
}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java
index d18a1233..1a367bd3 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java
@@ -3,6 +3,8 @@ package org.fox.ttrss.types;
import android.os.Parcel;
import android.os.Parcelable;
+import org.fox.ttrss.Application;
+
import java.util.ListIterator;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
@@ -56,6 +58,16 @@ public class ArticleList extends CopyOnWriteArrayList<Article> implements Parcel
}
}
+ public int getById(int id) {
+ for (int i = 0; i < size(); i++) {
+ if (get(i).id == id) {
+ return i;
+ }
+ }
+
+ return -1;
+ }
+
public String getAsCommaSeparatedIds() {
return this.stream().map(a -> String.valueOf(a.id))
.collect(Collectors.joining(","));