From 9f943fcaa56cda05bd1a7e8db4976630b19c5310 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 3 Aug 2023 16:13:50 +0200 Subject: [PATCH] Started contacts list header --- .../adapter/ConversationsListAdapter.kt | 17 +++++++++++++ app/src/main/res/layout/contact_list_cell.xml | 24 +++++++++++++++++-- app/src/main/res/values/colors.xml | 1 + 3 files changed, 40 insertions(+), 2 deletions(-) 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