From 46aea213eeea6f720307682b9d93991b177423cd Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Tue, 21 Apr 2015 12:16:29 +0800 Subject: [PATCH] caching status view holder to make it faster --- .../fragment/support/StatusFragment.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/twidere/src/main/java/org/mariotaku/twidere/fragment/support/StatusFragment.java b/twidere/src/main/java/org/mariotaku/twidere/fragment/support/StatusFragment.java index 6d6a5c398..21ab09d46 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/fragment/support/StatusFragment.java +++ b/twidere/src/main/java/org/mariotaku/twidere/fragment/support/StatusFragment.java @@ -1060,6 +1060,7 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac private StatusAdapterListener mStatusAdapterListener; private RecyclerView mRecyclerView; + private DetailStatusViewHolder mStatusViewHolder; public StatusAdapter(StatusFragment fragment, boolean compact) { setHasStableIds(true); @@ -1252,6 +1253,22 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac } } + @Override + public void onViewDetachedFromWindow(ViewHolder holder) { + if (holder instanceof DetailStatusViewHolder) { + mStatusViewHolder = (DetailStatusViewHolder) holder; + } + super.onViewDetachedFromWindow(holder); + } + + @Override + public void onViewAttachedToWindow(ViewHolder holder) { + if (holder == mStatusViewHolder) { + mStatusViewHolder = null; + } + super.onViewAttachedToWindow(holder); + } + @Override public boolean isLoadMoreIndicatorVisible() { return mLoadMoreIndicatorVisible; @@ -1283,6 +1300,9 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case VIEW_TYPE_DETAIL_STATUS: { + if (mStatusViewHolder != null) { + return mStatusViewHolder; + } final View view; if (mIsCompact) { view = mInflater.inflate(R.layout.header_status_compact, parent, false);