diff options
Diffstat (limited to 'fastadapter/src/main/kotlin')
3 files changed, 29 insertions, 30 deletions
diff --git a/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/AdapterUtils.kt b/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/AdapterUtils.kt index 42fe1a2..14fdc9d 100644 --- a/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/AdapterUtils.kt +++ b/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/AdapterUtils.kt @@ -31,14 +31,11 @@ import com.mikepenz.fastadapter.select.SelectExtension fun <Item : IItem<*>> fastAdapter(vararg adapter: IAdapter<out Item>) = FastAdapter.with<Item, IAdapter<out Item>>(adapter.toList()) -inline fun <reified T : IAdapterExtension<Item>, Item : IItem<*>> FastAdapter<Item>.getExtension(): T? = - getExtension(T::class.java) - /** * Returns selection size, or -1 if selection is disabled */ inline val <Item : IItem<*>> IAdapter<Item>.selectionSize: Int - get() = fastAdapter?.getExtension<SelectExtension<Item>, Item>()?.selections?.size ?: -1 + get() = fastAdapter?.getExtension<SelectExtension<Item>>()?.selections?.size ?: -1 inline val <Item : IItem<*>> IAdapter<Item>.selectedItems: Set<Item> - get() = fastAdapter?.getExtension<SelectExtension<Item>, Item>()?.selectedItems ?: emptySet() + get() = fastAdapter?.getExtension<SelectExtension<Item>>()?.selectedItems ?: emptySet() diff --git a/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/FastItemThemedAdapter.kt b/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/FastItemThemedAdapter.kt index 01ac0e5..e6d4b24 100644 --- a/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/FastItemThemedAdapter.kt +++ b/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/FastItemThemedAdapter.kt @@ -24,6 +24,7 @@ import androidx.annotation.RequiresApi import ca.allanwang.kau.ui.createSimpleRippleDrawable import ca.allanwang.kau.utils.adjustAlpha import com.mikepenz.fastadapter.IItem +import com.mikepenz.fastadapter.IItemAdapter import com.mikepenz.fastadapter.adapters.FastItemAdapter /** @@ -40,7 +41,11 @@ class FastItemThemedAdapter<Item : IItem<*>>( backgroundColor: Int? = null, accentColor: Int? = null ) : FastItemAdapter<Item>() { - constructor(colors: ThemableIItemColors) : this(colors.textColor, colors.backgroundColor, colors.accentColor) + constructor(colors: ThemableIItemColors) : this( + colors.textColor, + colors.backgroundColor, + colors.accentColor + ) var textColor: Int? = textColor set(value) { @@ -73,46 +78,41 @@ class FastItemThemedAdapter<Item : IItem<*>>( notifyAdapterDataSetChanged() } - override fun add(position: Int, items: List<Item>): FastItemAdapter<Item> { + override fun add(position: Int, items: List<Item>): IItemAdapter<Item, Item> { injectTheme(items) return super.add(position, items) } - override fun add(position: Int, item: Item): FastItemAdapter<Item> { - injectTheme(item) - return super.add(position, item) + override fun add(position: Int, vararg items: Item): IItemAdapter<Item, Item> { + injectTheme(items.toList()) + return super.add(position, *items) } - override fun add(item: Item): FastItemAdapter<Item> { - injectTheme(item) - return super.add(item) + override fun add(vararg items: Item): IItemAdapter<Item, Item> { + injectTheme(items.toList()) + return super.add(*items) } - override fun add(items: List<Item>?): FastItemAdapter<Item> { + override fun add(items: List<Item>): IItemAdapter<Item, Item> { injectTheme(items) return super.add(items) } - override fun set(items: List<Item>?): FastItemAdapter<Item> { + override fun set(items: List<Item>): IItemAdapter<Item, Item> { injectTheme(items) return super.set(items) } - override fun set(position: Int, item: Item): FastItemAdapter<Item> { + override fun set(position: Int, item: Item): IItemAdapter<Item, Item> { injectTheme(item) return super.set(position, item) } - override fun setNewList(items: List<Item>?, retainFilter: Boolean): FastItemAdapter<Item> { + override fun setNewList(items: List<Item>, retainFilter: Boolean): IItemAdapter<Item, Item> { injectTheme(items) return super.setNewList(items, retainFilter) } - override fun setNewList(items: List<Item>?): FastItemAdapter<Item> { - injectTheme(items) - return super.setNewList(items) - } - private fun injectTheme(items: Collection<IItem<*>?>?) { items?.forEach { injectTheme(it) } } diff --git a/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/RepeatedClickListener.kt b/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/RepeatedClickListener.kt index 3e7d707..99c367b 100644 --- a/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/RepeatedClickListener.kt +++ b/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/RepeatedClickListener.kt @@ -17,10 +17,10 @@ package ca.allanwang.kau.adapters import android.view.View import androidx.annotation.IntRange +import com.mikepenz.fastadapter.ClickListener import com.mikepenz.fastadapter.FastAdapter import com.mikepenz.fastadapter.IAdapter import com.mikepenz.fastadapter.IItem -import com.mikepenz.fastadapter.listeners.OnClickListener /** * Created by Allan Wang on 26/12/17. @@ -28,9 +28,11 @@ import com.mikepenz.fastadapter.listeners.OnClickListener fun <Item : IItem<*>> FastAdapter<Item>.withOnRepeatedClickListener( count: Int, duration: Long, - event: OnClickListener<Item> -) = - withOnClickListener(RepeatedClickListener(count, duration, event)) + event: ClickListener<Item> +): FastAdapter<Item> { + onClickListener = RepeatedClickListener(count, duration, event) + return this +} /** * Registers and skips each click until the designated [count] clicks are triggered, @@ -40,8 +42,8 @@ fun <Item : IItem<*>> FastAdapter<Item>.withOnRepeatedClickListener( private class RepeatedClickListener<Item : IItem<*>>( @IntRange(from = 1) val count: Int, @IntRange(from = 1) val duration: Long, - val event: OnClickListener<Item> -) : OnClickListener<Item> { + val event: ClickListener<Item> +) : ClickListener<Item> { init { if (count <= 0) @@ -53,7 +55,7 @@ private class RepeatedClickListener<Item : IItem<*>>( private var chain = 0 private var time = -1L - override fun onClick(v: View?, adapter: IAdapter<Item>, item: Item, position: Int): Boolean { + override fun invoke(v: View?, adapter: IAdapter<Item>, item: Item, position: Int): Boolean { val now = System.currentTimeMillis() if (time - now < duration) chain++ @@ -62,7 +64,7 @@ private class RepeatedClickListener<Item : IItem<*>>( time = now if (chain == count) { chain = 0 - event.onClick(v, adapter, item, position) + event(v, adapter, item, position) return true } return false |