diff options
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/view/adapter/OrderedCustomListAdapter.kt')
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/view/adapter/OrderedCustomListAdapter.kt | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/OrderedCustomListAdapter.kt b/app/src/main/java/net/lacolaco/smileessence/view/adapter/OrderedCustomListAdapter.kt new file mode 100644 index 00000000..53b1c824 --- /dev/null +++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/OrderedCustomListAdapter.kt @@ -0,0 +1,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)!! + } +} |