From 9d283da0f05eda6a7c3cba22a61c009ce11a8b56 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 19 Sep 2012 23:39:46 +0400 Subject: various tablet-mode refresh fixes --- src/org/fox/ttrss/ArticlePager.java | 17 +++++++++-------- src/org/fox/ttrss/HeadlinesActivity.java | 2 +- src/org/fox/ttrss/HeadlinesFragment.java | 18 ++++++++++++------ 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java index 0608679b..74c7255f 100644 --- a/src/org/fox/ttrss/ArticlePager.java +++ b/src/org/fox/ttrss/ArticlePager.java @@ -85,6 +85,8 @@ public class ArticlePager extends Fragment { int position = m_articles.indexOf(m_article); + m_listener.onArticleSelected(m_article, false); + pager.setAdapter(m_adapter); pager.setCurrentItem(position); pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @@ -149,9 +151,8 @@ public class ArticlePager extends Fragment { if (result != null) { m_adapter.notifyDataSetChanged(); - if (m_article.id == 0) { + if (m_article.id == 0 || m_articles.indexOf(m_article) == -1) { if (m_articles.size() > 0) { - Log.d(TAG, "blank id on refresh"); m_article = m_articles.get(0); m_listener.onArticleSelected(m_article, false); } @@ -235,8 +236,6 @@ public class ArticlePager extends Fragment { if (m_articles.size() == 0 || !m_feed.equals(GlobalState.getInstance().m_activeFeed)) { refresh(false); GlobalState.getInstance().m_activeFeed = m_feed; - } else { - m_adapter.notifyDataSetChanged(); } m_activity.initMenu(); @@ -247,12 +246,14 @@ public class ArticlePager extends Fragment { } public void setActiveArticle(Article article) { - m_article = article; + if (m_article != article) { + m_article = article; - int position = m_articles.indexOf(m_article); + int position = m_articles.indexOf(m_article); - ViewPager pager = (ViewPager) getView().findViewById(R.id.article_pager); + ViewPager pager = (ViewPager) getView().findViewById(R.id.article_pager); - pager.setCurrentItem(position); + pager.setCurrentItem(position); + } } } diff --git a/src/org/fox/ttrss/HeadlinesActivity.java b/src/org/fox/ttrss/HeadlinesActivity.java index f31d56d9..6fad6c66 100644 --- a/src/org/fox/ttrss/HeadlinesActivity.java +++ b/src/org/fox/ttrss/HeadlinesActivity.java @@ -165,7 +165,7 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL public void onHeadlinesLoaded(boolean appended) { HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); - if (hf != null && !appended) { + if (hf != null) { Article article = hf.getActiveArticle(); if (article == null) { diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java index d5cd7bf4..f2148003 100644 --- a/src/org/fox/ttrss/HeadlinesFragment.java +++ b/src/org/fox/ttrss/HeadlinesFragment.java @@ -374,6 +374,10 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, if (result != null) { m_refreshInProgress = false; + + if (m_articles.indexOf(m_activeArticle) == -1) + m_activeArticle = null; + m_adapter.notifyDataSetChanged(); m_listener.onHeadlinesLoaded(fappend); } else { @@ -817,14 +821,16 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, } public void setActiveArticle(Article article) { - m_activeArticle = article; - m_adapter.notifyDataSetChanged(); + if (article != m_activeArticle) { + m_activeArticle = article; + m_adapter.notifyDataSetChanged(); - ListView list = (ListView)getView().findViewById(R.id.headlines); + ListView list = (ListView)getView().findViewById(R.id.headlines); - if (list != null && article != null) { - int position = m_adapter.getPosition(article); - list.setSelection(position); + if (list != null && article != null) { + int position = m_adapter.getPosition(article); + list.setSelection(position); + } } } -- cgit v1.2.3