From 448355136be4ed6f836cbfdcfda0b19d6ce62608 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 14 Apr 2016 11:58:53 +0200 Subject: [PATCH] This should sort the contact list alphabetically --- src/org/linphone/ContactsListFragment.java | 6 ++---- src/org/linphone/ContactsManager.java | 2 ++ src/org/linphone/LinphoneContact.java | 10 +++++++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/org/linphone/ContactsListFragment.java b/src/org/linphone/ContactsListFragment.java index e43e99b41..35dfae08d 100644 --- a/src/org/linphone/ContactsListFragment.java +++ b/src/org/linphone/ContactsListFragment.java @@ -457,10 +457,8 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O public View getView(final int position, View convertView, ViewGroup parent) { View view = null; - LinphoneContact contact = null; - do { - contact = (LinphoneContact) getItem(position); - } while (contact == null); + LinphoneContact contact = (LinphoneContact) getItem(position); + if (contact == null) return null; if (convertView != null) { view = convertView; diff --git a/src/org/linphone/ContactsManager.java b/src/org/linphone/ContactsManager.java index 9518298cc..d6725936d 100644 --- a/src/org/linphone/ContactsManager.java +++ b/src/org/linphone/ContactsManager.java @@ -20,6 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. package org.linphone; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.linphone.compatibility.Compatibility; @@ -245,6 +246,7 @@ public class ContactsManager extends ContentObserver { for (LinphoneContact contact : contacts) { contact.refresh(); } + Collections.sort(contacts); return contacts; } diff --git a/src/org/linphone/LinphoneContact.java b/src/org/linphone/LinphoneContact.java index 2d92e33dc..2a77c1660 100644 --- a/src/org/linphone/LinphoneContact.java +++ b/src/org/linphone/LinphoneContact.java @@ -21,6 +21,7 @@ package org.linphone; import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneCore; @@ -39,7 +40,7 @@ import android.net.Uri; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds; -public class LinphoneContact implements Serializable { +public class LinphoneContact implements Serializable, Comparable { /** * */ @@ -437,6 +438,13 @@ public class LinphoneContact implements Serializable { return createLinphoneFriend(); } + @Override + public int compareTo(LinphoneContact contact) { + String firstLetter = getFullName().substring(0, 1).toUpperCase(Locale.getDefault()); + String contactfirstLetter = contact.getFullName().substring(0, 1).toUpperCase(Locale.getDefault()); + return firstLetter.compareTo(contactfirstLetter); + } + private Uri getContactPictureUri(String id) { Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.parseLong(id)); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);