class
BasicItemCallback<T> : DiffUtil.ItemCallback<T>() {
override fun areItemsTheSame(oldItem: T, newItem: T): Boolean {
return
oldItem == newItem
}
override fun areContentsTheSame(oldItem: T, newItem: T): Boolean {
return
oldItem == newItem
}
}
class
TaskHeaderAdapter(item: TaskListItem.Header) :
GenericAdapter<TaskListItem.Header>(initialItem = listOf(item)) {
override fun createViewHolder(itemView: View): GenericViewHolder<TaskListItem.Header> {
return
TaskHeaderViewHolder(itemView)
}
}
class
TaskHeaderViewHolder(
itemView: View
) : GenericViewHolder<TaskListItem.Header>(itemView) {
private
val binding by lazy { ItemTaskHeaderBinding.bind(itemView) }
override fun bind(item: TaskListItem.Header) {
binding.apply {
startDateTxt.text = item.startTime
}
}
}
class
TaskItemAdapter(tasks: List<TaskListItem.Item> = emptyList()) :
GenericAdapter<TaskListItem.Item>(initialItem = tasks) {
override fun createViewHolder(itemView: View): GenericViewHolder<TaskListItem.Item> {
return
TaskItemViewHolder(itemView)
}
}
class
TaskItemViewHolder(
itemView: View
) : GenericViewHolder<TaskListItem.Item>(itemView) {
private
val binding by lazy { ItemTaskBinding.bind(itemView) }
override fun bind(item: TaskListItem.Item) {
val task = item.task
binding.apply {
val alarmResId =
if
(task.hasAlarm) R.drawable.ic_alarm_on
else
R.drawable.ic_alarm_off
alarmImg.setImageResource(alarmResId)
contentTxt.text =
if
(task.isDone) task.content.strikeThrough()
else
task.content
endDateTxt.text =
if
(task.end_time.isNotBlank())
"~ "
.plus(task.end_time.takeLast(
5
))
else
""
}
}
}