Preserving list selection when list is populated with stale data
Bug: 3352121
Change-Id: I7a553dbdf7d8a0e5d2af8536b8396ecd56b4a2ba
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 3d53da8..1385c8b 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -336,6 +336,9 @@
if (mSelectedContactUri.toString().startsWith(Contacts.CONTENT_LOOKUP_URI.toString())) {
List<String> pathSegments = mSelectedContactUri.getPathSegments();
mSelectedContactLookupKey = Uri.encode(pathSegments.get(2));
+ if (mSelectedContactUri.getPathSegments().size() >= 3) {
+ mSelectedContactId = ContentUris.parseId(mSelectedContactUri);
+ }
} else if (mSelectedContactUri.toString().startsWith(Contacts.CONTENT_URI.toString()) &&
mSelectedContactUri.getPathSegments().size() >= 2) {
mSelectedContactLookupKey = null;
diff --git a/src/com/android/contacts/list/ContactListAdapter.java b/src/com/android/contacts/list/ContactListAdapter.java
index 0a2b104..ffe9fc6 100644
--- a/src/com/android/contacts/list/ContactListAdapter.java
+++ b/src/com/android/contacts/list/ContactListAdapter.java
@@ -320,7 +320,8 @@
offset = cursor.getPosition();
break;
}
- } else {
+ }
+ if (mSelectedContactId != 0) {
long contactId = cursor.getLong(CONTACT_ID_COLUMN_INDEX);
if (contactId == mSelectedContactId) {
offset = cursor.getPosition();