ananas/app/src/main/java/dev/jdtech/jellyfin/serverselect/ServerGridAdapter.kt
2021-06-08 11:09:51 +02:00

58 lines
No EOL
2 KiB
Kotlin

package dev.jdtech.jellyfin.serverselect
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.database.Server
import dev.jdtech.jellyfin.databinding.ServerItemBinding
class ServerGridAdapter(
private val onClickListener: OnClickListener,
private val onLongClickListener: OnLongClickListener
) : ListAdapter<Server, ServerGridAdapter.ServerViewHolder>(DiffCallback) {
class ServerViewHolder(private var binding: ServerItemBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(server: Server) {
binding.server = server
binding.executePendingBindings()
}
}
companion object DiffCallback : DiffUtil.ItemCallback<Server>() {
override fun areItemsTheSame(oldItem: Server, newItem: Server): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(oldItem: Server, newItem: Server): Boolean {
return oldItem == newItem
}
}
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): ServerViewHolder {
return ServerViewHolder(ServerItemBinding.inflate(LayoutInflater.from(parent.context)))
}
override fun onBindViewHolder(holder: ServerViewHolder, position: Int) {
val server = getItem(position)
holder.itemView.setOnClickListener {
onClickListener.onClick(server)
}
holder.itemView.setOnLongClickListener {
onLongClickListener.onLongClick(server)
}
holder.bind(server)
}
class OnClickListener(val clickListener: (server: Server) -> Unit) {
fun onClick(server: Server) = clickListener(server)
}
class OnLongClickListener(val clickListener: (server: Server) -> Boolean) {
fun onLongClick(server: Server) = clickListener(server)
}
}