From 76140cff3a95407f47ca46087fca55f3943d9e06 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 3 Jun 2017 10:21:41 +0300 Subject: [PATCH] do not reuse headline footer views --- .../java/org/fox/ttrss/HeadlinesFragment.java | 53 +++++++++++++------ .../ttrss/util/HeaderViewRecyclerAdapter.java | 4 ++ 2 files changed, 42 insertions(+), 15 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 60054b6e..2f30272b 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 @@ -118,9 +118,9 @@ public class HeadlinesFragment extends Fragment { private RecyclerView m_list; private LinearLayoutManager m_layoutManager; - private View m_listLoadingView; + /*private View m_listLoadingView; private View m_topChangedView; - private View m_amrFooterView; + private View m_amrFooterView;*/ private MediaPlayer m_mediaPlayer; private TextureView m_activeTexture; @@ -285,6 +285,25 @@ public class HeadlinesFragment extends Fragment { setRetainInstance(true); } + public View createListFooter(int layoutId) { + if (isAdded() || m_activity != null) { + View view = getActivity().getLayoutInflater().inflate(layoutId, m_list, false); + + if (layoutId == R.layout.headlines_footer) { + WindowManager wm = (WindowManager) m_activity.getSystemService(Context.WINDOW_SERVICE); + Display display = wm.getDefaultDisplay(); + int screenHeight = display.getHeight(); + + view.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, screenHeight)); + } + + return view; + + } else { + return null; + } + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -429,18 +448,18 @@ public class HeadlinesFragment extends Fragment { fab.setVisibility(View.GONE); } - m_listLoadingView = inflater.inflate(R.layout.headlines_row_loadmore, m_list, false); - m_topChangedView = inflater.inflate(R.layout.headlines_row_top_changed, m_list, false); + /*m_listLoadingView = inflater.inflate(R.layout.headlines_row_loadmore, m_list, false); + m_topChangedView = inflater.inflate(R.layout.headlines_row_top_changed, m_list, false);*/ if (m_prefs.getBoolean("headlines_mark_read_scroll", false)) { - WindowManager wm = (WindowManager) m_activity.getSystemService(Context.WINDOW_SERVICE); + /*WindowManager wm = (WindowManager) m_activity.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); - int screenHeight = display.getHeight(); + int screenHeight = display.getHeight();*/ - m_amrFooterView = inflater.inflate(R.layout.headlines_footer, container, false); + /*m_amrFooterView = inflater.inflate(R.layout.headlines_footer, container, false); m_amrFooterView.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, screenHeight)); - m_adapter.addFooterView(m_amrFooterView); + m_adapter.addFooterView(m_amrFooterView);*/ } if (m_activity.isSmallScreen()) { @@ -566,9 +585,11 @@ public class HeadlinesFragment extends Fragment { @SuppressWarnings({ "serial" }) public void refresh(final boolean append, boolean userInitiated) { - m_adapter.removeFooterView(m_listLoadingView); + /*m_adapter.removeFooterView(m_listLoadingView); m_adapter.removeFooterView(m_topChangedView); - m_adapter.removeFooterView(m_amrFooterView); + m_adapter.removeFooterView(m_amrFooterView);*/ + + m_adapter.removeAllFooterViews(); if (!append) m_lazyLoadDisabled = false; @@ -598,9 +619,10 @@ public class HeadlinesFragment extends Fragment { if (m_swipeLayout != null) m_swipeLayout.setRefreshing(false); - m_adapter.removeFooterView(m_listLoadingView); + /*m_adapter.removeFooterView(m_listLoadingView); m_adapter.removeFooterView(m_topChangedView); - m_adapter.removeFooterView(m_amrFooterView); + m_adapter.removeFooterView(m_amrFooterView);*/ + m_adapter.removeAllFooterViews(); if (result != null) { m_refreshInProgress = false; @@ -612,7 +634,7 @@ public class HeadlinesFragment extends Fragment { if (m_firstIdChanged) { m_lazyLoadDisabled = true; - m_adapter.addFooterView(m_topChangedView); + m_adapter.addFooterView(createListFooter(R.layout.headlines_row_top_changed)); } if (m_amountLoaded < HEADLINES_REQUEST_SIZE) { @@ -637,7 +659,8 @@ public class HeadlinesFragment extends Fragment { } } - if (m_amrFooterView != null) m_adapter.addFooterView(m_amrFooterView); + if (m_prefs.getBoolean("headlines_mark_read_scroll", false)) + m_adapter.addFooterView(createListFooter(R.layout.headlines_footer)); } }; @@ -668,7 +691,7 @@ public class HeadlinesFragment extends Fragment { } if (skip > 0) { - m_adapter.addFooterView(m_listLoadingView); + m_adapter.addFooterView(createListFooter(R.layout.headlines_row_loadmore)); } } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java index 4de15531..c8337f87 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java @@ -129,6 +129,10 @@ public class HeaderViewRecyclerAdapter extends RecyclerView.Adapter