diff --git a/app/src/main/kotlin/at/connyduck/pixelcat/components/bottomsheet/accountselection/AccountSelectionAdapter.kt b/app/src/main/kotlin/at/connyduck/pixelcat/components/bottomsheet/accountselection/AccountSelectionAdapter.kt index cbd8251..d5d1824 100644 --- a/app/src/main/kotlin/at/connyduck/pixelcat/components/bottomsheet/accountselection/AccountSelectionAdapter.kt +++ b/app/src/main/kotlin/at/connyduck/pixelcat/components/bottomsheet/accountselection/AccountSelectionAdapter.kt @@ -23,6 +23,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import at.connyduck.pixelcat.R +import at.connyduck.pixelcat.components.util.BindingHolder import at.connyduck.pixelcat.components.util.extension.hide import at.connyduck.pixelcat.components.util.extension.show import at.connyduck.pixelcat.databinding.ItemAccountSelectionBinding @@ -34,17 +35,17 @@ class AccountSelectionAdapter( private val accounts: List, private val onAccountSelected: (Long) -> Unit, private val onAddAccount: () -> Unit -) : RecyclerView.Adapter() { +) : RecyclerView.Adapter>() { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AccountSelectionViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder { val binding = ItemAccountSelectionBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return AccountSelectionViewHolder(binding) + return BindingHolder(binding) } override fun getItemCount() = accounts.size + 1 - override fun onBindViewHolder(holder: AccountSelectionViewHolder, position: Int) { + override fun onBindViewHolder(holder: BindingHolder, position: Int) { val binding = holder.binding if (position == accounts.size) { binding.accountAvatar.load(R.drawable.ic_plus_background) @@ -72,6 +73,3 @@ class AccountSelectionAdapter( } } } - -class AccountSelectionViewHolder(val binding: ItemAccountSelectionBinding) : - RecyclerView.ViewHolder(binding.root) diff --git a/app/src/main/kotlin/at/connyduck/pixelcat/components/compose/ComposeImageAdapter.kt b/app/src/main/kotlin/at/connyduck/pixelcat/components/compose/ComposeImageAdapter.kt index 630653c..63136a2 100644 --- a/app/src/main/kotlin/at/connyduck/pixelcat/components/compose/ComposeImageAdapter.kt +++ b/app/src/main/kotlin/at/connyduck/pixelcat/components/compose/ComposeImageAdapter.kt @@ -24,8 +24,8 @@ import android.view.ViewGroup import androidx.core.view.setPadding import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter -import androidx.recyclerview.widget.RecyclerView import at.connyduck.pixelcat.R +import at.connyduck.pixelcat.components.util.BindingHolder import at.connyduck.pixelcat.databinding.ItemComposeImageBinding import at.connyduck.sparkbutton.helpers.Utils import coil.api.load @@ -37,7 +37,7 @@ interface OnImageActionClickListener { class ComposeImageAdapter( private val listener: OnImageActionClickListener -) : ListAdapter( +) : ListAdapter>( object : DiffUtil.ItemCallback() { override fun areItemsTheSame(old: String, new: String): Boolean { return old == new @@ -49,13 +49,13 @@ class ComposeImageAdapter( } ) { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ComposeImageViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder { val binding = ItemComposeImageBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return ComposeImageViewHolder(binding) + return BindingHolder(binding) } - override fun onBindViewHolder(holder: ComposeImageViewHolder, position: Int) { + override fun onBindViewHolder(holder: BindingHolder, position: Int) { getItem(position)?.let { uri -> @@ -80,6 +80,3 @@ class ComposeImageAdapter( const val ADD_ITEM = "add_item" } } - -class ComposeImageViewHolder(val binding: ItemComposeImageBinding) : - RecyclerView.ViewHolder(binding.root) diff --git a/app/src/main/kotlin/at/connyduck/pixelcat/components/profile/ProfileHeaderAdapter.kt b/app/src/main/kotlin/at/connyduck/pixelcat/components/profile/ProfileHeaderAdapter.kt index a63f528..e0e0993 100644 --- a/app/src/main/kotlin/at/connyduck/pixelcat/components/profile/ProfileHeaderAdapter.kt +++ b/app/src/main/kotlin/at/connyduck/pixelcat/components/profile/ProfileHeaderAdapter.kt @@ -23,6 +23,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import at.connyduck.pixelcat.R +import at.connyduck.pixelcat.components.util.BindingHolder import at.connyduck.pixelcat.components.util.extension.visible import at.connyduck.pixelcat.databinding.ItemProfileHeaderBinding import at.connyduck.pixelcat.model.Account @@ -31,7 +32,7 @@ import coil.api.load import coil.transform.RoundedCornersTransformation import java.text.NumberFormat -class ProfileHeaderAdapter : RecyclerView.Adapter() { +class ProfileHeaderAdapter : RecyclerView.Adapter>() { private var account: Account? = null private var isSelf: Boolean = false @@ -48,16 +49,15 @@ class ProfileHeaderAdapter : RecyclerView.Adapter() { notifyItemChanged(1, RELATIONSHIP_CHANGED) } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProfileHeaderViewHolder { - val binding = ItemProfileHeaderBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return ProfileHeaderViewHolder(binding) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder { + return BindingHolder(ItemProfileHeaderBinding.inflate(LayoutInflater.from(parent.context), parent, false)) } - override fun onBindViewHolder(holder: ProfileHeaderViewHolder, position: Int) { + override fun onBindViewHolder(holder: BindingHolder, position: Int) { // nothing to do } - override fun onBindViewHolder(holder: ProfileHeaderViewHolder, position: Int, payloads: List) { + override fun onBindViewHolder(holder: BindingHolder, position: Int, payloads: List) { if (payloads.isEmpty() || payloads.contains(ACCOUNT_CHANGED)) { account?.let { holder.binding.profileName.text = it.username @@ -97,5 +97,3 @@ class ProfileHeaderAdapter : RecyclerView.Adapter() { const val RELATIONSHIP_CHANGED = "RELATIONSHIP" } } - -class ProfileHeaderViewHolder(val binding: ItemProfileHeaderBinding) : RecyclerView.ViewHolder(binding.root) diff --git a/app/src/main/kotlin/at/connyduck/pixelcat/components/profile/ProfileImageAdapter.kt b/app/src/main/kotlin/at/connyduck/pixelcat/components/profile/ProfileImageAdapter.kt index e2ad621..6be9b7f 100644 --- a/app/src/main/kotlin/at/connyduck/pixelcat/components/profile/ProfileImageAdapter.kt +++ b/app/src/main/kotlin/at/connyduck/pixelcat/components/profile/ProfileImageAdapter.kt @@ -23,8 +23,8 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.RecyclerView import at.connyduck.pixelcat.R +import at.connyduck.pixelcat.components.util.BindingHolder import at.connyduck.pixelcat.components.util.extension.hide import at.connyduck.pixelcat.components.util.extension.show import at.connyduck.pixelcat.databinding.ItemProfileImageBinding @@ -34,7 +34,7 @@ import coil.api.load class ProfileImageAdapter( private val imageSizePx: Int -) : PagingDataAdapter( +) : PagingDataAdapter>( object : DiffUtil.ItemCallback() { override fun areItemsTheSame(old: Status, new: Status): Boolean { return false @@ -45,15 +45,15 @@ class ProfileImageAdapter( } ) { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProfileImageViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder { val binding = ItemProfileImageBinding.inflate(LayoutInflater.from(parent.context), parent, false) binding.root.layoutParams = ViewGroup.LayoutParams(imageSizePx, imageSizePx) - return ProfileImageViewHolder(binding) + return BindingHolder(binding) } - override fun onBindViewHolder(holder: ProfileImageViewHolder, position: Int) { + override fun onBindViewHolder(holder: BindingHolder, position: Int) { getItem(position)?.let { status -> holder.binding.profileImageView.load(status.attachments.firstOrNull()?.previewUrl) @@ -74,5 +74,3 @@ class ProfileImageAdapter( } } } - -class ProfileImageViewHolder(val binding: ItemProfileImageBinding) : RecyclerView.ViewHolder(binding.root) diff --git a/app/src/main/kotlin/at/connyduck/pixelcat/components/timeline/TimelineImageAdapter.kt b/app/src/main/kotlin/at/connyduck/pixelcat/components/timeline/TimelineImageAdapter.kt index 1fc105b..07a45ee 100644 --- a/app/src/main/kotlin/at/connyduck/pixelcat/components/timeline/TimelineImageAdapter.kt +++ b/app/src/main/kotlin/at/connyduck/pixelcat/components/timeline/TimelineImageAdapter.kt @@ -22,11 +22,12 @@ package at.connyduck.pixelcat.components.timeline import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import at.connyduck.pixelcat.components.util.BindingHolder import at.connyduck.pixelcat.databinding.ItemTimelineImageBinding import at.connyduck.pixelcat.model.Attachment import coil.api.load -class TimelineImageAdapter : RecyclerView.Adapter() { +class TimelineImageAdapter : RecyclerView.Adapter>() { var images: List = emptyList() set(value) { @@ -34,17 +35,14 @@ class TimelineImageAdapter : RecyclerView.Adapter() { notifyDataSetChanged() } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TimelineImageViewHolder { - val binding = ItemTimelineImageBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return TimelineImageViewHolder(binding) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder { + return BindingHolder(ItemTimelineImageBinding.inflate(LayoutInflater.from(parent.context), parent, false)) } override fun getItemCount() = images.size - override fun onBindViewHolder(holder: TimelineImageViewHolder, position: Int) { + override fun onBindViewHolder(holder: BindingHolder, position: Int) { holder.binding.timelineImageView.load(images[position].previewUrl) } } - -class TimelineImageViewHolder(val binding: ItemTimelineImageBinding) : RecyclerView.ViewHolder(binding.root) diff --git a/app/src/main/kotlin/at/connyduck/pixelcat/components/timeline/TimelineListAdapter.kt b/app/src/main/kotlin/at/connyduck/pixelcat/components/timeline/TimelineListAdapter.kt index 6a91e28..1a97eba 100644 --- a/app/src/main/kotlin/at/connyduck/pixelcat/components/timeline/TimelineListAdapter.kt +++ b/app/src/main/kotlin/at/connyduck/pixelcat/components/timeline/TimelineListAdapter.kt @@ -24,8 +24,8 @@ import android.view.ViewGroup import androidx.core.text.parseAsHtml import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.RecyclerView import at.connyduck.pixelcat.components.profile.ProfileActivity +import at.connyduck.pixelcat.components.util.BindingHolder import at.connyduck.pixelcat.components.util.extension.visible import at.connyduck.pixelcat.databinding.ItemStatusBinding import at.connyduck.pixelcat.db.entitity.StatusEntity @@ -53,19 +53,19 @@ object TimelineDiffUtil : DiffUtil.ItemCallback() { class TimelineListAdapter( private val displayWidth: Int, private val listener: TimeLineActionListener -) : PagingDataAdapter(TimelineDiffUtil) { +) : PagingDataAdapter>(TimelineDiffUtil) { private val dateTimeFormatter = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT) - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TimelineViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder { val binding = ItemStatusBinding.inflate(LayoutInflater.from(parent.context), parent, false) binding.postImages.adapter = TimelineImageAdapter() binding.postIndicator.setViewPager(binding.postImages) (binding.postImages.adapter as TimelineImageAdapter).registerAdapterDataObserver(binding.postIndicator.adapterDataObserver) - return TimelineViewHolder(binding) + return BindingHolder(binding) } - override fun onBindViewHolder(holder: TimelineViewHolder, position: Int) { + override fun onBindViewHolder(holder: BindingHolder, position: Int) { getItem(position)?.let { status -> @@ -128,5 +128,3 @@ class TimelineListAdapter( } } } - -class TimelineViewHolder(val binding: ItemStatusBinding) : RecyclerView.ViewHolder(binding.root) diff --git a/app/src/main/kotlin/at/connyduck/pixelcat/components/util/BindingHolder.kt b/app/src/main/kotlin/at/connyduck/pixelcat/components/util/BindingHolder.kt new file mode 100644 index 0000000..1234244 --- /dev/null +++ b/app/src/main/kotlin/at/connyduck/pixelcat/components/util/BindingHolder.kt @@ -0,0 +1,8 @@ +package at.connyduck.pixelcat.components.util + +import androidx.recyclerview.widget.RecyclerView +import androidx.viewbinding.ViewBinding + +class BindingHolder( + val binding: T +): RecyclerView.ViewHolder(binding.root) \ No newline at end of file