aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/view/adapter/OrderedCustomListAdapter.kt
blob: 53b1c824bc61cc4da413b0f64ca4de7b6d08eba7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package net.lacolaco.smileessence.view.adapter

import net.lacolaco.smileessence.entity.IdObject

import java.util.*

abstract class OrderedCustomListAdapter<T : IdObject>
constructor(comparator: Comparator<Long> = Comparator { x, y -> java.lang.Long.compare(x, y) }) : CustomListAdapter<T>() {
    private val treeMap: MutableMap<Long, T> = TreeMap(Collections.reverseOrder(comparator))

    override val list: List<T>
        @Synchronized get() = ArrayList(treeMap.values)

    @Synchronized
    fun add(item: T) {
        treeMap.put(item.id, item)
    }

    @Synchronized
    fun addAll(items: Collection<T>) {
        for (item in items) {
            treeMap.put(item.id, item)
        }
    }

    @Synchronized
    fun clear() {
        treeMap.clear()
    }

    @Synchronized
    fun remove(item: T): T {
        return treeMap.remove(item.id)!!
    }
}