summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2012-06-06 13:31:58 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-06-06 13:31:59 -0700
commita2c628fb402610ce65371fb06d5adaf7eaf9df9b (patch)
treeb0f588c025ba8ac43157c045f20dafe304d4a582 /packages/SystemUI
parent533fce25a22718c491a86c31866b7751f1f582b7 (diff)
parentd1a040c3e1dc30b26f4dfee8c9de2c802ac134b8 (diff)
downloadframeworks_base-a2c628fb402610ce65371fb06d5adaf7eaf9df9b.zip
frameworks_base-a2c628fb402610ce65371fb06d5adaf7eaf9df9b.tar.gz
frameworks_base-a2c628fb402610ce65371fb06d5adaf7eaf9df9b.tar.bz2
Merge "Fix bug 6499508" into jb-dev
Diffstat (limited to 'packages/SystemUI')
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java28
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java35
2 files changed, 17 insertions, 46 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
index e1abb23..f85007e 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
@@ -41,7 +41,8 @@ import com.android.systemui.R;
import com.android.systemui.SwipeHelper;
import com.android.systemui.recent.RecentsPanelView.TaskDescriptionAdapter;
-import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
public class RecentsHorizontalScrollView extends HorizontalScrollView
implements SwipeHelper.Callback, RecentsPanelView.RecentsScrollView {
@@ -53,7 +54,7 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
protected int mLastScrollPosition;
private SwipeHelper mSwipeHelper;
private RecentsScrollViewPerformanceHelper mPerformanceHelper;
- private ArrayList<View> mRecycledViews;
+ private HashSet<View> mRecycledViews;
private int mNumItemsInOneScreenful;
public RecentsHorizontalScrollView(Context context, AttributeSet attrs) {
@@ -62,7 +63,7 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
float pagingTouchSlop = ViewConfiguration.get(mContext).getScaledPagingTouchSlop();
mSwipeHelper = new SwipeHelper(SwipeHelper.Y, this, densityScale, pagingTouchSlop);
mPerformanceHelper = RecentsScrollViewPerformanceHelper.create(context, attrs, this, false);
- mRecycledViews = new ArrayList<View>();
+ mRecycledViews = new HashSet<View>();
}
public void setMinSwipeAlpha(float minAlpha) {
@@ -89,16 +90,12 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
setLayoutTransition(null);
mLinearLayout.removeAllViews();
- for (int i = 0; i < mRecycledViews.size(); i++) {
- View child = mRecycledViews.get(i);
- if (child.getParent() != null) {
- throw new RuntimeException("Recycled child has a parent");
- }
- }
+ Iterator<View> recycledViews = mRecycledViews.iterator();
for (int i = 0; i < mAdapter.getCount(); i++) {
View old = null;
- if (mRecycledViews.size() != 0) {
- old = mRecycledViews.remove(mRecycledViews.size() - 1);
+ if (recycledViews.hasNext()) {
+ old = recycledViews.next();
+ recycledViews.remove();
old.setVisibility(VISIBLE);
}
@@ -195,9 +192,6 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
public void onChildDismissed(View v) {
addToRecycledViews(v);
mLinearLayout.removeView(v);
- if (v.getParent() != null) {
- throw new RuntimeException("Recycled child has parent");
- }
mCallback.handleSwipe(v);
// Restore the alpha/translation parameters to what they were before swiping
// (for when these items are recycled)
@@ -369,15 +363,9 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
mNumItemsInOneScreenful =
(int) FloatMath.ceil(dm.widthPixels / (float) child.getMeasuredWidth());
addToRecycledViews(child);
- if (child.getParent() != null) {
- throw new RuntimeException("First recycled child has parent");
- }
for (int i = 0; i < mNumItemsInOneScreenful - 1; i++) {
addToRecycledViews(mAdapter.createView(mLinearLayout));
- if (mRecycledViews.get(mRecycledViews.size() - 1).getParent() != null) {
- throw new RuntimeException("Recycled child has parent");
- }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
index a1e36fb..d387515 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
@@ -41,7 +41,8 @@ import com.android.systemui.R;
import com.android.systemui.SwipeHelper;
import com.android.systemui.recent.RecentsPanelView.TaskDescriptionAdapter;
-import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
public class RecentsVerticalScrollView extends ScrollView
implements SwipeHelper.Callback, RecentsPanelView.RecentsScrollView {
@@ -53,7 +54,7 @@ public class RecentsVerticalScrollView extends ScrollView
protected int mLastScrollPosition;
private SwipeHelper mSwipeHelper;
private RecentsScrollViewPerformanceHelper mPerformanceHelper;
- private ArrayList<View> mRecycledViews;
+ private HashSet<View> mRecycledViews;
private int mNumItemsInOneScreenful;
public RecentsVerticalScrollView(Context context, AttributeSet attrs) {
@@ -63,7 +64,7 @@ public class RecentsVerticalScrollView extends ScrollView
mSwipeHelper = new SwipeHelper(SwipeHelper.X, this, densityScale, pagingTouchSlop);
mPerformanceHelper = RecentsScrollViewPerformanceHelper.create(context, attrs, this, true);
- mRecycledViews = new ArrayList<View>();
+ mRecycledViews = new HashSet<View>();
}
public void setMinSwipeAlpha(float minAlpha) {
@@ -93,19 +94,16 @@ public class RecentsVerticalScrollView extends ScrollView
setLayoutTransition(null);
mLinearLayout.removeAllViews();
- for (int i = 0; i < mRecycledViews.size(); i++) {
- View child = mRecycledViews.get(i);
- if (child.getParent() != null) {
- throw new RuntimeException("Recycled child has parent");
- }
- }
+
// Once we can clear the data associated with individual item views,
// we can get rid of the removeAllViews() and the code below will
// recycle them.
+ Iterator<View> recycledViews = mRecycledViews.iterator();
for (int i = 0; i < mAdapter.getCount(); i++) {
View old = null;
- if (mRecycledViews.size() != 0) {
- old = mRecycledViews.remove(mRecycledViews.size() - 1);
+ if (recycledViews.hasNext()) {
+ old = recycledViews.next();
+ recycledViews.remove();
old.setVisibility(VISIBLE);
if (old.getParent() != null) {
throw new RuntimeException("Recycled child has parent (i: " + i + ", recycled i: " + mRecycledViews.size());
@@ -150,9 +148,6 @@ public class RecentsVerticalScrollView extends ScrollView
thumbnailView.setClickable(true);
thumbnailView.setOnClickListener(launchAppListener);
thumbnailView.setOnLongClickListener(longClickListener);
- if (view.getParent() != null) {
- throw new RuntimeException("Recycled child has parent");
- }
// We don't want to dismiss recents if a user clicks on the app title
// (we also don't want to launch the app either, though, because the
@@ -162,9 +157,6 @@ public class RecentsVerticalScrollView extends ScrollView
appTitle.setOnTouchListener(noOpListener);
final View calloutLine = view.findViewById(R.id.recents_callout_line);
calloutLine.setOnTouchListener(noOpListener);
- if (view.getParent() != null) {
- throw new RuntimeException("Recycled child has parent");
- }
mLinearLayout.addView(view);
}
@@ -213,9 +205,6 @@ public class RecentsVerticalScrollView extends ScrollView
public void onChildDismissed(View v) {
addToRecycledViews(v);
mLinearLayout.removeView(v);
- if (v.getParent() != null) {
- throw new RuntimeException("Recycled child has parent");
- }
mCallback.handleSwipe(v);
// Restore the alpha/translation parameters to what they were before swiping
// (for when these items are recycled)
@@ -389,15 +378,9 @@ public class RecentsVerticalScrollView extends ScrollView
mNumItemsInOneScreenful =
(int) FloatMath.ceil(dm.heightPixels / (float) child.getMeasuredHeight());
addToRecycledViews(child);
- if (child.getParent() != null) {
- throw new RuntimeException("First recycled child has parent");
- }
for (int i = 0; i < mNumItemsInOneScreenful - 1; i++) {
addToRecycledViews(mAdapter.createView(mLinearLayout));
- if (mRecycledViews.get(mRecycledViews.size() - 1).getParent() != null) {
- throw new RuntimeException("Recycled child has parent");
- }
}
}