Loading src/com/android/contacts/list/ContactTileAdapter.java +34 −19 Original line number Diff line number Diff line Loading @@ -183,18 +183,33 @@ public class ContactTileAdapter extends BaseAdapter { /** * Iterates over the {@link Cursor} * Returns position of the first NON Starred Contact * Returns -1 if not {@link DisplayType#STREQUENT} or {@link DisplayType#STREQUENT_PHONE_ONLY} * Returns -1 if {@link DisplayType#STARRED_ONLY} or {@link DisplayType#GROUP_MEMBERS} * Returns 0 if {@link DisplayType#FREQUENT_ONLY} */ private int getDividerPosition(Cursor cursor) { if (cursor == null || cursor.isClosed() || (mDisplayType != DisplayType.STREQUENT && mDisplayType != DisplayType.STREQUENT_PHONE_ONLY)) { return -1; if (cursor == null || cursor.isClosed()) { throw new IllegalStateException("Unable to access cursor"); } switch (mDisplayType) { case STREQUENT: case STREQUENT_PHONE_ONLY: while (cursor.moveToNext()) { if (cursor.getInt(mStarredIndex) == 0) { return cursor.getPosition(); } } break; case GROUP_MEMBERS: case STARRED_ONLY: // There is no divider return -1; case FREQUENT_ONLY: // Divider is first return 0; default: throw new IllegalStateException("Unrecognized DisplayType " + mDisplayType); } // There are not NON Starred contacts in cursor // Set divider positon to end Loading Loading @@ -354,6 +369,7 @@ public class ContactTileAdapter extends BaseAdapter { // Creating new row if needed contactTileRowView = new ContactTileRow(mContext, itemViewType); } contactTileRowView.configureRow(contactList, position == getCount() - 1); return contactTileRowView; } Loading Loading @@ -390,11 +406,12 @@ public class ContactTileAdapter extends BaseAdapter { } @Override public int getViewTypeCount() { return (mDisplayType == DisplayType.STREQUENT || mDisplayType == DisplayType.STREQUENT_PHONE_ONLY) ? ViewTypes.COUNT : 1; return ViewTypes.MAX_VIEW_COUNT; } /** @Override public int getItemViewType(int position) { /* * Returns view type based on {@link DisplayType}. * {@link DisplayType#STARRED_ONLY} and {@link DisplayType#GROUP_MEMBERS} * are {@link ViewTypes#STARRED}. Loading @@ -402,8 +419,6 @@ public class ContactTileAdapter extends BaseAdapter { * {@link DisplayType#STREQUENT} mixes both {@link ViewTypes} * and also adds in {@link ViewTypes#DIVIDER}. */ @Override public int getItemViewType(int position) { switch (mDisplayType) { case STREQUENT: if (position < getRowCount(mDividerPosition)) { Loading Loading @@ -504,7 +519,7 @@ public class ContactTileAdapter extends BaseAdapter { } private static class ViewTypes { public static final int COUNT = 4; public static final int MAX_VIEW_COUNT = 4; public static final int STARRED = 0; public static final int DIVIDER = 1; public static final int FREQUENT = 2; Loading Loading
src/com/android/contacts/list/ContactTileAdapter.java +34 −19 Original line number Diff line number Diff line Loading @@ -183,18 +183,33 @@ public class ContactTileAdapter extends BaseAdapter { /** * Iterates over the {@link Cursor} * Returns position of the first NON Starred Contact * Returns -1 if not {@link DisplayType#STREQUENT} or {@link DisplayType#STREQUENT_PHONE_ONLY} * Returns -1 if {@link DisplayType#STARRED_ONLY} or {@link DisplayType#GROUP_MEMBERS} * Returns 0 if {@link DisplayType#FREQUENT_ONLY} */ private int getDividerPosition(Cursor cursor) { if (cursor == null || cursor.isClosed() || (mDisplayType != DisplayType.STREQUENT && mDisplayType != DisplayType.STREQUENT_PHONE_ONLY)) { return -1; if (cursor == null || cursor.isClosed()) { throw new IllegalStateException("Unable to access cursor"); } switch (mDisplayType) { case STREQUENT: case STREQUENT_PHONE_ONLY: while (cursor.moveToNext()) { if (cursor.getInt(mStarredIndex) == 0) { return cursor.getPosition(); } } break; case GROUP_MEMBERS: case STARRED_ONLY: // There is no divider return -1; case FREQUENT_ONLY: // Divider is first return 0; default: throw new IllegalStateException("Unrecognized DisplayType " + mDisplayType); } // There are not NON Starred contacts in cursor // Set divider positon to end Loading Loading @@ -354,6 +369,7 @@ public class ContactTileAdapter extends BaseAdapter { // Creating new row if needed contactTileRowView = new ContactTileRow(mContext, itemViewType); } contactTileRowView.configureRow(contactList, position == getCount() - 1); return contactTileRowView; } Loading Loading @@ -390,11 +406,12 @@ public class ContactTileAdapter extends BaseAdapter { } @Override public int getViewTypeCount() { return (mDisplayType == DisplayType.STREQUENT || mDisplayType == DisplayType.STREQUENT_PHONE_ONLY) ? ViewTypes.COUNT : 1; return ViewTypes.MAX_VIEW_COUNT; } /** @Override public int getItemViewType(int position) { /* * Returns view type based on {@link DisplayType}. * {@link DisplayType#STARRED_ONLY} and {@link DisplayType#GROUP_MEMBERS} * are {@link ViewTypes#STARRED}. Loading @@ -402,8 +419,6 @@ public class ContactTileAdapter extends BaseAdapter { * {@link DisplayType#STREQUENT} mixes both {@link ViewTypes} * and also adds in {@link ViewTypes#DIVIDER}. */ @Override public int getItemViewType(int position) { switch (mDisplayType) { case STREQUENT: if (position < getRowCount(mDividerPosition)) { Loading Loading @@ -504,7 +519,7 @@ public class ContactTileAdapter extends BaseAdapter { } private static class ViewTypes { public static final int COUNT = 4; public static final int MAX_VIEW_COUNT = 4; public static final int STARRED = 0; public static final int DIVIDER = 1; public static final int FREQUENT = 2; Loading