DO NOT MERGE Check item type before re-binding transient state views

BUG: 12701797
Change-Id: I180613cc342d24b63f80fd699937c7543c38fc20
This commit is contained in:
Alan Viverette
2014-03-07 14:30:11 -08:00
parent e8d2846fb9
commit df262cd922

View File

@@ -2233,10 +2233,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.