diff options
author | Alan Viverette <alanv@google.com> | 2014-02-19 15:25:10 -0800 |
---|---|---|
committer | Alan Viverette <alanv@google.com> | 2014-02-19 15:25:10 -0800 |
commit | ff699570f62113b4df5b0efd74b9df8b9dbcd1a9 (patch) | |
tree | ca4cfafce7ce4138b1003e6306bf09c060979509 | |
parent | 621e1e8493f1a7b0fb5d5390067663635ed24e8c (diff) | |
download | frameworks_base-ff699570f62113b4df5b0efd74b9df8b9dbcd1a9.zip frameworks_base-ff699570f62113b4df5b0efd74b9df8b9dbcd1a9.tar.gz frameworks_base-ff699570f62113b4df5b0efd74b9df8b9dbcd1a9.tar.bz2 |
Check item type before re-binding transient state views
BUG: 12701797
Change-Id: I180613cc342d24b63f80fd699937c7543c38fc20
-rw-r--r-- | core/java/android/widget/AbsListView.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 93b95bf..7ea0613 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2309,10 +2309,16 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te // data and discard the view if we fail. final View transientView = mRecycler.getTransientStateView(position); if (transientView != null) { - final View updatedView = mAdapter.getView(position, transientView, this); - if (updatedView != transientView) { - // Failed to re-bind the data, scrap the obtained view. - mRecycler.addScrapView(updatedView, position); + final LayoutParams params = (LayoutParams) transientView.getLayoutParams(); + + // If the view type hasn't changed, attempt to re-bind the data. + if (params.viewType == mAdapter.getItemViewType(position)) { + final View updatedView = mAdapter.getView(position, transientView, this); + + // If we failed to re-bind the data, scrap the obtained view. + if (updatedView != transientView) { + mRecycler.addScrapView(updatedView, position); + } } // Scrap view implies temporary detachment. |