diff --git a/app/phone/build.gradle.kts b/app/phone/build.gradle.kts
index e87ea7c2..85606195 100644
--- a/app/phone/build.gradle.kts
+++ b/app/phone/build.gradle.kts
@@ -70,7 +70,6 @@ android {
}
buildFeatures {
- dataBinding = true
viewBinding = true
}
}
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt
index 70654131..16d4f463 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt
@@ -3,7 +3,6 @@ package dev.jdtech.jellyfin
import android.view.View
import android.widget.ImageView
import androidx.annotation.DrawableRes
-import androidx.databinding.BindingAdapter
import coil.load
import dev.jdtech.jellyfin.api.JellyfinApi
import dev.jdtech.jellyfin.models.FindroidEpisode
@@ -17,7 +16,6 @@ import org.jellyfin.sdk.model.api.ImageType
import java.util.UUID
import dev.jdtech.jellyfin.core.R as CoreR
-@BindingAdapter("itemImage")
fun bindItemImage(imageView: ImageView, item: BaseItemDto) {
val itemId =
if (item.type == BaseItemKind.EPISODE || item.type == BaseItemKind.SEASON && item.imageTags.isNullOrEmpty()) item.seriesId else item.id
@@ -27,7 +25,6 @@ fun bindItemImage(imageView: ImageView, item: BaseItemDto) {
.posterDescription(item.name)
}
-@BindingAdapter("itemImage")
fun bindItemImage(imageView: ImageView, item: FindroidItem) {
val itemId = when (item) {
is FindroidEpisode -> item.seriesId
@@ -39,7 +36,6 @@ fun bindItemImage(imageView: ImageView, item: FindroidItem) {
.posterDescription(item.name)
}
-@BindingAdapter("itemBackdropImage")
fun bindItemBackdropImage(imageView: ImageView, item: FindroidItem?) {
if (item == null) return
@@ -48,19 +44,16 @@ fun bindItemBackdropImage(imageView: ImageView, item: FindroidItem?) {
.backdropDescription(item.name)
}
-@BindingAdapter("itemBackdropById")
fun bindItemBackdropById(imageView: ImageView, itemId: UUID) {
imageView.loadImage("/items/$itemId/Images/${ImageType.BACKDROP}")
}
-@BindingAdapter("personImage")
fun bindPersonImage(imageView: ImageView, person: BaseItemPerson) {
imageView
.loadImage("/items/${person.id}/Images/${ImageType.PRIMARY}", placeholderId = CoreR.drawable.person_placeholder)
.posterDescription(person.name)
}
-@BindingAdapter("cardItemImage")
fun bindCardItemImage(imageView: ImageView, item: FindroidItem) {
val imageType = when (item) {
is FindroidMovie -> ImageType.BACKDROP
@@ -72,12 +65,10 @@ fun bindCardItemImage(imageView: ImageView, item: FindroidItem) {
.posterDescription(item.name)
}
-@BindingAdapter("seasonPoster")
fun bindSeasonPoster(imageView: ImageView, seasonId: UUID) {
imageView.loadImage("/items/$seasonId/Images/${ImageType.PRIMARY}")
}
-@BindingAdapter("userImage")
fun bindUserImage(imageView: ImageView, user: User) {
imageView
.loadImage("/users/${user.id}/Images/${ImageType.PRIMARY}", placeholderId = CoreR.drawable.user_placeholder)
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/CollectionListAdapter.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/CollectionListAdapter.kt
index 71b30d82..871cf232 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/CollectionListAdapter.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/CollectionListAdapter.kt
@@ -5,6 +5,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
+import dev.jdtech.jellyfin.bindCardItemImage
import dev.jdtech.jellyfin.databinding.CollectionItemBinding
import dev.jdtech.jellyfin.models.FindroidCollection
@@ -14,8 +15,8 @@ class CollectionListAdapter(
class CollectionViewHolder(private var binding: CollectionItemBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(collection: FindroidCollection) {
- binding.collection = collection
- binding.executePendingBindings()
+ binding.collectionName.text = collection.name
+ bindCardItemImage(binding.collectionImage, collection)
}
}
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/EpisodeListAdapter.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/EpisodeListAdapter.kt
index b7d37e60..923a47c6 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/EpisodeListAdapter.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/EpisodeListAdapter.kt
@@ -8,6 +8,9 @@ import androidx.core.view.isVisible
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
+import dev.jdtech.jellyfin.bindCardItemImage
+import dev.jdtech.jellyfin.bindItemBackdropById
+import dev.jdtech.jellyfin.bindSeasonPoster
import dev.jdtech.jellyfin.databinding.EpisodeItemBinding
import dev.jdtech.jellyfin.databinding.SeasonHeaderBinding
import dev.jdtech.jellyfin.models.EpisodeItem
@@ -26,25 +29,24 @@ class EpisodeListAdapter(
class HeaderViewHolder(private var binding: SeasonHeaderBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(header: EpisodeItem.Header) {
- binding.seriesId = header.seriesId
- binding.seasonId = header.seasonId
binding.seasonName.text = header.seasonName
binding.seriesName.text = header.seriesName
- binding.executePendingBindings()
+ bindItemBackdropById(binding.itemBanner, header.seriesId)
+ bindSeasonPoster(binding.seasonPoster, header.seasonId)
}
}
class EpisodeViewHolder(private var binding: EpisodeItemBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(episode: FindroidEpisode) {
- binding.episode = episode
-
binding.episodeTitle.text = if (episode.indexNumberEnd == null) {
binding.root.context.getString(CoreR.string.episode_name, episode.indexNumber, episode.name)
} else {
binding.root.context.getString(CoreR.string.episode_name_with_end, episode.indexNumber, episode.indexNumberEnd, episode.name)
}
+ binding.episodeOverview.text = episode.overview
+
if (episode.playbackPositionTicks > 0) {
binding.progressBar.layoutParams.width = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
@@ -56,9 +58,11 @@ class EpisodeListAdapter(
binding.progressBar.visibility = View.GONE
}
+ binding.playedIcon.isVisible = episode.played
+ binding.missingIcon.isVisible = episode.missing
binding.downloadedIcon.isVisible = episode.isDownloaded()
- binding.executePendingBindings()
+ bindCardItemImage(binding.episodeImage, episode)
}
}
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/HomeEpisodeListAdapter.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/HomeEpisodeListAdapter.kt
index 19945ea0..1676637b 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/HomeEpisodeListAdapter.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/HomeEpisodeListAdapter.kt
@@ -8,6 +8,7 @@ import androidx.core.view.isVisible
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
+import dev.jdtech.jellyfin.bindCardItemImage
import dev.jdtech.jellyfin.databinding.HomeEpisodeItemBinding
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
@@ -22,7 +23,6 @@ class HomeEpisodeListAdapter(private val onClickListener: OnClickListener) : Lis
) :
RecyclerView.ViewHolder(binding.root) {
fun bind(item: FindroidItem) {
- binding.item = item
if (item.playbackPositionTicks > 0) {
binding.progressBar.layoutParams.width = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
@@ -49,7 +49,7 @@ class HomeEpisodeListAdapter(private val onClickListener: OnClickListener) : Lis
}
}
- binding.executePendingBindings()
+ bindCardItemImage(binding.episodeImage, item)
}
}
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/PersonListAdapter.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/PersonListAdapter.kt
index 76339602..8cbc5571 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/PersonListAdapter.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/PersonListAdapter.kt
@@ -5,6 +5,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
+import dev.jdtech.jellyfin.bindPersonImage
import dev.jdtech.jellyfin.databinding.PersonItemBinding
import org.jellyfin.sdk.model.api.BaseItemPerson
@@ -13,8 +14,9 @@ class PersonListAdapter(private val clickListener: (item: BaseItemPerson) -> Uni
class PersonViewHolder(private var binding: PersonItemBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(person: BaseItemPerson) {
- binding.person = person
- binding.executePendingBindings()
+ binding.personName.text = person.name
+ binding.personRole.text = person.role
+ bindPersonImage(binding.personImage, person)
}
}
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/UserListAdapter.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/UserListAdapter.kt
index d9f0f24d..5b69d055 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/UserListAdapter.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/UserListAdapter.kt
@@ -5,6 +5,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
+import dev.jdtech.jellyfin.bindUserImage
import dev.jdtech.jellyfin.databinding.UserListItemBinding
import dev.jdtech.jellyfin.models.User
@@ -15,8 +16,8 @@ class UserListAdapter(
class UserViewHolder(private var binding: UserListItemBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(user: User) {
- binding.user = user
- binding.executePendingBindings()
+ binding.userName.text = user.name
+ bindUserImage(binding.userImage, user)
}
}
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/UserLoginListAdapter.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/UserLoginListAdapter.kt
index 5c0280e3..957dc113 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/UserLoginListAdapter.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/UserLoginListAdapter.kt
@@ -5,6 +5,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
+import dev.jdtech.jellyfin.bindUserImage
import dev.jdtech.jellyfin.databinding.UserItemBinding
import dev.jdtech.jellyfin.models.User
@@ -14,8 +15,8 @@ class UserLoginListAdapter(
class UserLoginViewHolder(private var binding: UserItemBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(user: User) {
- binding.user = user
- binding.executePendingBindings()
+ binding.userName.text = user.name
+ bindUserImage(binding.userImage, user)
}
}
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemListAdapter.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemListAdapter.kt
index b8707ba9..5ef80297 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemListAdapter.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemListAdapter.kt
@@ -7,6 +7,7 @@ import androidx.core.view.isVisible
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
+import dev.jdtech.jellyfin.bindItemImage
import dev.jdtech.jellyfin.databinding.BaseItemBinding
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
@@ -21,7 +22,6 @@ class ViewItemListAdapter(
class ItemViewHolder(private var binding: BaseItemBinding, private val parent: ViewGroup) :
RecyclerView.ViewHolder(binding.root) {
fun bind(item: FindroidItem, fixedWidth: Boolean) {
- binding.item = item
binding.itemName.text = if (item is FindroidEpisode) item.seriesName else item.name
binding.itemCount.visibility =
if (item.unplayedItemCount != null && item.unplayedItemCount!! > 0) View.VISIBLE else View.GONE
@@ -31,9 +31,11 @@ class ViewItemListAdapter(
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
}
+ binding.itemCount.text = item.unplayedItemCount.toString()
+ binding.playedIcon.isVisible = item.played
binding.downloadedIcon.isVisible = item.isDownloaded()
- binding.executePendingBindings()
+ bindItemImage(binding.itemImage, item)
}
}
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemPagingAdapter.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemPagingAdapter.kt
index 90dc05bd..43c6224d 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemPagingAdapter.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemPagingAdapter.kt
@@ -7,6 +7,7 @@ import androidx.core.view.isVisible
import androidx.paging.PagingDataAdapter
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
+import dev.jdtech.jellyfin.bindItemImage
import dev.jdtech.jellyfin.databinding.BaseItemBinding
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
@@ -21,7 +22,6 @@ class ViewItemPagingAdapter(
class ItemViewHolder(private var binding: BaseItemBinding, private val parent: ViewGroup) :
RecyclerView.ViewHolder(binding.root) {
fun bind(item: FindroidItem, fixedWidth: Boolean) {
- binding.item = item
binding.itemName.text =
if (item is FindroidEpisode) item.seriesName else item.name
binding.itemCount.visibility =
@@ -32,9 +32,11 @@ class ViewItemPagingAdapter(
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
}
+ binding.itemCount.text = item.unplayedItemCount.toString()
+ binding.playedIcon.isVisible = item.played
binding.downloadedIcon.isVisible = item.isDownloaded()
- binding.executePendingBindings()
+ bindItemImage(binding.itemImage, item)
}
}
diff --git a/app/phone/src/main/res/layout/base_item.xml b/app/phone/src/main/res/layout/base_item.xml
index f6bf4e49..cbd5dcf5 100644
--- a/app/phone/src/main/res/layout/base_item.xml
+++ b/app/phone/src/main/res/layout/base_item.xml
@@ -1,103 +1,88 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/item_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="12dp"
+ android:layout_marginBottom="24dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:foreground="@drawable/ripple_background"
+ android:orientation="vertical">
-
+
-
-
-
-
-
-
+ android:layout_marginTop="4dp"
+ android:ellipsize="end"
+ android:maxLines="2"
+ android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/item_image"
+ tools:text="Movie title" />
-
+
+
+
+ android:id="@+id/item_count"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_marginStart="8dp"
+ android:background="@drawable/circle_background"
+ android:gravity="center"
+ android:textAppearance="@style/TextAppearance.Material3.BodySmall"
+ android:textColor="?attr/colorOnPrimary"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:text="9" />
-
+ app:layout_constraintTop_toTopOf="@id/item_image"
+ app:tint="?attr/colorOnPrimary" />
-
+
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/phone/src/main/res/layout/collection_item.xml b/app/phone/src/main/res/layout/collection_item.xml
index 36ecfbac..e13b04b8 100644
--- a/app/phone/src/main/res/layout/collection_item.xml
+++ b/app/phone/src/main/res/layout/collection_item.xml
@@ -1,47 +1,36 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="12dp"
+ android:layout_marginBottom="24dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:foreground="@drawable/ripple_background"
+ android:orientation="vertical">
-
+
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+ android:layout_marginTop="4dp"
+ android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/collection_image"
+ tools:text="Movies" />
+
\ No newline at end of file
diff --git a/app/phone/src/main/res/layout/episode_item.xml b/app/phone/src/main/res/layout/episode_item.xml
index 34c20ea0..8a46dab5 100644
--- a/app/phone/src/main/res/layout/episode_item.xml
+++ b/app/phone/src/main/res/layout/episode_item.xml
@@ -1,143 +1,127 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="100dp"
+ android:layout_marginHorizontal="24dp"
+ android:layout_marginBottom="24dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:foreground="@drawable/ripple_background">
-
-
-
-
-
-
-
-
+ android:scaleType="centerCrop"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image" />
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+ android:layout_marginStart="8dp"
+ android:background="@drawable/circle_background"
+ android:backgroundTint="?attr/colorError"
+ app:layout_constraintEnd_toStartOf="@id/played_icon"
+ app:layout_constraintTop_toTopOf="@id/episode_image"
+ tools:visibility="visible">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/phone/src/main/res/layout/home_episode_item.xml b/app/phone/src/main/res/layout/home_episode_item.xml
index 40995caf..422c08ce 100644
--- a/app/phone/src/main/res/layout/home_episode_item.xml
+++ b/app/phone/src/main/res/layout/home_episode_item.xml
@@ -1,88 +1,77 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="240dp"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="12dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:foreground="@drawable/ripple_background">
-
+
-
-
-
-
+ android:layout_marginTop="4dp"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/episode_image"
+ tools:text="Wonder Egg Priority" />
-
+
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/phone/src/main/res/layout/person_item.xml b/app/phone/src/main/res/layout/person_item.xml
index e9fa0b2d..74ec8930 100644
--- a/app/phone/src/main/res/layout/person_item.xml
+++ b/app/phone/src/main/res/layout/person_item.xml
@@ -1,52 +1,39 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/item_layout"
+ android:layout_width="110dp"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="8dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:foreground="@drawable/ripple_background"
+ android:orientation="vertical">
-
+
-
-
-
-
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
+ tools:text="Rosa Salazar" />
-
-
-
-
-
-
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/phone/src/main/res/layout/season_header.xml b/app/phone/src/main/res/layout/season_header.xml
index 3620c236..12901a25 100644
--- a/app/phone/src/main/res/layout/season_header.xml
+++ b/app/phone/src/main/res/layout/season_header.xml
@@ -1,86 +1,69 @@
-
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/header"
+ android:layout_width="match_parent"
+ android:layout_height="200dp"
+ android:layout_marginBottom="16dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
-
+
-
+
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/app/phone/src/main/res/layout/user_item.xml b/app/phone/src/main/res/layout/user_item.xml
index 18b4e668..08357961 100644
--- a/app/phone/src/main/res/layout/user_item.xml
+++ b/app/phone/src/main/res/layout/user_item.xml
@@ -1,51 +1,38 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="64dp"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="12dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:foreground="@drawable/ripple_background">
-
+
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+ android:layout_marginTop="8dp"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:textAlignment="center"
+ android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/user_image"
+ tools:text="username" />
+
\ No newline at end of file
diff --git a/app/phone/src/main/res/layout/user_list_item.xml b/app/phone/src/main/res/layout/user_list_item.xml
index 611fdd62..b672acdb 100644
--- a/app/phone/src/main/res/layout/user_list_item.xml
+++ b/app/phone/src/main/res/layout/user_list_item.xml
@@ -1,52 +1,39 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="50dp"
+ android:layout_marginHorizontal="24dp"
+ android:layout_marginTop="12dp"
+ android:layout_marginBottom="12dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:foreground="@drawable/ripple_background">
-
+
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
\ No newline at end of file