From 17fceded15156cd242f5b871d05291a9af1836a8 Mon Sep 17 00:00:00 2001 From: Jacob Abrams Date: Sat, 28 Jun 2014 21:38:18 -0700 Subject: [PATCH] Don't unnecessarily set LayoutParams on children Setting LayoutParams on children triggers requestLayout which can be expensive and result in significantly lower framerate for children layouts that don't need it. When requestLayout method is invoked the needToMeasure boolean will be true, this is what we'd like to avoid unless it is actually needed. BUG: https://code.google.com/p/android/issues/detail?id=72733 Change-Id: Id5d8f3431b5f943b1279eae41ee43d32a99514fc Signed-off-by: Jacob Abrams --- core/java/android/widget/AbsListView.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 25a43a6a2969c..8a63adf075acd 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2289,7 +2289,9 @@ public abstract class AbsListView extends AdapterView implements Te lp = (LayoutParams) vlp; } lp.itemId = mAdapter.getItemId(position); - child.setLayoutParams(lp); + if (lp != vlp) { + child.setLayoutParams(lp); + } } if (AccessibilityManager.getInstance(mContext).isEnabled()) {