diff --git a/app/src/main/java/org/linphone/ui/contacts/adapter/ConversationsListAdapter.kt b/app/src/main/java/org/linphone/ui/contacts/adapter/ConversationsListAdapter.kt
index 254560874..a07007f17 100644
--- a/app/src/main/java/org/linphone/ui/contacts/adapter/ConversationsListAdapter.kt
+++ b/app/src/main/java/org/linphone/ui/contacts/adapter/ConversationsListAdapter.kt
@@ -35,12 +35,29 @@ class ContactsListAdapter(
selectedAdapterPosition = -1
}
+ fun showHeaderForPosition(position: Int): Boolean {
+ if (position >= itemCount) return false
+
+ val contact = getItem(position)
+ val firstLetter = contact.name.value?.get(0).toString()
+ val previousPosition = position - 1
+
+ return if (previousPosition >= 0) {
+ val previousItemFirstLetter = getItem(previousPosition).name.value?.get(0).toString()
+ !firstLetter.equals(previousItemFirstLetter, ignoreCase = true)
+ } else {
+ true
+ }
+ }
+
inner class ViewHolder(
val binding: ContactListCellBinding
) : RecyclerView.ViewHolder(binding.root) {
fun bind(contactModel: ContactModel) {
with(binding) {
model = contactModel
+ firstLetter = contactModel.name.value?.get(0).toString()
+ showFirstLetter = showHeaderForPosition(bindingAdapterPosition)
lifecycleOwner = viewLifecycleOwner
diff --git a/app/src/main/res/layout/contact_list_cell.xml b/app/src/main/res/layout/contact_list_cell.xml
index 018c7c1c3..371764c72 100644
--- a/app/src/main/res/layout/contact_list_cell.xml
+++ b/app/src/main/res/layout/contact_list_cell.xml
@@ -9,6 +9,12 @@
+
+
+
+
#F9F9F9
#364860
#4E6074
+ #9AABB5
#E5E5EA
\ No newline at end of file