From 52af255018b0c56c4a35dfedf10720e7d4792bbc Mon Sep 17 00:00:00 2001 From: Yigit Boyar Date: Thu, 2 Oct 2014 10:41:09 -0700 Subject: [PATCH] Don't layout removed scrap views This CL also changes the addView logic in demo LM. Previously, removed views were not added. Now, RV takes care of this so LM can simply add them. Bug: 17783492 Change-Id: I375405ef888fd43f9da0e1a1c13ae54bae381b44 --- .../android/supportv7/widget/AnimatedRecyclerView.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java b/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java index 11256858a..50fe1e1a8 100644 --- a/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java +++ b/samples/Support7Demos/src/com/example/android/supportv7/widget/AnimatedRecyclerView.java @@ -219,9 +219,7 @@ public class AnimatedRecyclerView extends Activity { View v = recycler.getViewForPosition(mFirstPosition + i); RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) v.getLayoutParams(); - if (!mPredictiveAnimationsEnabled || !params.isItemRemoved()) { - addView(v); - } + addView(v); measureChild(v, 0, 0); bottom = top + v.getMeasuredHeight(); v.layout(left, top, right, bottom); @@ -230,7 +228,7 @@ public class AnimatedRecyclerView extends Activity { } } - if (mAnimationsEnabled && mPredictiveAnimationsEnabled) { + if (mAnimationsEnabled && mPredictiveAnimationsEnabled && !state.isPreLayout()) { // Now that we've run a full layout, figure out which views were not used // (cached in previousViews). For each of these views, position it where // it would go, according to its position relative to the visible @@ -249,6 +247,9 @@ public class AnimatedRecyclerView extends Activity { View view = previousViews.get(i).itemView; RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) view.getLayoutParams(); + if (params.isItemRemoved()) { + continue; + } int position = params.getViewPosition(); int newTop; if (position < mFirstPosition) {