From 53f35c7c31f31db40b106cc0f7a51f5daf40a7fd Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Tue, 28 May 2013 10:07:57 -0700 Subject: Fix for CompositeCursorAdapter returning wrong item view types Cherrypick of https://googleplex-android-review.googlesource.com/#/c/306995/, which fixes the bug that causes getItemViewType to be called with the wrong position, causing new views to be created unnecessarily. Bug: 8398321 Change-Id: I6c921fe7d5135cf9f9d9bdd08b5aa4df7662ac1c --- common/java/com/android/common/widget/CompositeCursorAdapter.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/common/java/com/android/common/widget/CompositeCursorAdapter.java b/common/java/com/android/common/widget/CompositeCursorAdapter.java index d6064e1..605eb82 100644 --- a/common/java/com/android/common/widget/CompositeCursorAdapter.java +++ b/common/java/com/android/common/widget/CompositeCursorAdapter.java @@ -309,10 +309,14 @@ public abstract class CompositeCursorAdapter extends BaseAdapter { int end = start + mPartitions[i].count; if (position >= start && position < end) { int offset = position - start; - if (mPartitions[i].hasHeader && offset == 0) { + if (mPartitions[i].hasHeader) { + offset--; + } + if (offset == -1) { return IGNORE_ITEM_VIEW_TYPE; + } else { + return getItemViewType(i, offset); } - return getItemViewType(i, position); } start = end; } -- cgit v1.2.3