forked from fekt/hush-android-wallet
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.6 KiB
47 lines
1.6 KiB
2 years ago
|
package cash.z.ecc.android.ui.history
|
||
|
|
||
|
import android.view.LayoutInflater
|
||
|
import android.view.ViewGroup
|
||
|
import androidx.paging.PagedListAdapter
|
||
|
import androidx.recyclerview.widget.DiffUtil
|
||
|
import cash.z.ecc.android.R
|
||
|
import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction
|
||
|
|
||
|
class TransactionAdapter<T : ConfirmedTransaction> :
|
||
|
PagedListAdapter<T, TransactionViewHolder<T>>(
|
||
|
object : DiffUtil.ItemCallback<T>() {
|
||
|
override fun areItemsTheSame(
|
||
|
oldItem: T,
|
||
|
newItem: T
|
||
|
) = oldItem.minedHeight == newItem.minedHeight && oldItem.noteId == newItem.noteId &&
|
||
|
// bugfix: distinguish between self-transactions so they don't overwrite each other in the UI // TODO confirm that this is working, as intended
|
||
|
((oldItem.raw == null && newItem.raw == null) || (oldItem.raw != null && newItem.raw != null && oldItem.raw!!.contentEquals(newItem.raw!!)))
|
||
|
|
||
|
override fun areContentsTheSame(
|
||
|
oldItem: T,
|
||
|
newItem: T
|
||
|
) = oldItem == newItem
|
||
|
}
|
||
|
) {
|
||
|
|
||
|
init {
|
||
|
setHasStableIds(true)
|
||
|
}
|
||
|
|
||
|
override fun onCreateViewHolder(
|
||
|
parent: ViewGroup,
|
||
|
viewType: Int
|
||
|
) = TransactionViewHolder<T>(
|
||
|
LayoutInflater.from(parent.context).inflate(R.layout.item_transaction, parent, false)
|
||
|
)
|
||
|
|
||
|
override fun onBindViewHolder(
|
||
|
holder: TransactionViewHolder<T>,
|
||
|
position: Int
|
||
|
) = holder.bindTo(getItem(position))
|
||
|
|
||
|
override fun getItemId(position: Int): Long {
|
||
|
return getItem(position)?.id ?: -1
|
||
|
}
|
||
|
}
|