From 6a599e553a467f15be7ed60c554f43aeac5936ca Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 27 Jul 2019 19:16:00 -0700 Subject: Fix theme injection --- .../main/kotlin/ca/allanwang/kau/about/FaqIItem.kt | 27 ++++++++------ docs/Changelog.md | 3 ++ .../kau/adapters/FastItemThemedAdapter.kt | 42 ++++------------------ sample/src/main/res/xml/kau_changelog.xml | 5 +++ 4 files changed, 31 insertions(+), 46 deletions(-) diff --git a/about/src/main/kotlin/ca/allanwang/kau/about/FaqIItem.kt b/about/src/main/kotlin/ca/allanwang/kau/about/FaqIItem.kt index 4873f6e..96b9884 100644 --- a/about/src/main/kotlin/ca/allanwang/kau/about/FaqIItem.kt +++ b/about/src/main/kotlin/ca/allanwang/kau/about/FaqIItem.kt @@ -37,7 +37,7 @@ import com.mikepenz.fastadapter.select.getSelectExtension /** * Created by Allan Wang on 2017-08-02. */ -class FaqIItem(val content: FaqItem) : KauIItem< FaqIItem.ViewHolder>( +class FaqIItem(val content: FaqItem) : KauIItem( R.layout.kau_iitem_faq, ::ViewHolder, R.id.kau_item_faq ), ThemableIItem by ThemableIItemDelegate() { @@ -46,16 +46,21 @@ class FaqIItem(val content: FaqItem) : KauIItem< FaqIItem.ViewHolder>( fastAdapter.getSelectExtension().isSelectable = true fastAdapter.addEventHook(object : ClickEventHook>() { - override fun onBind(viewHolder: RecyclerView.ViewHolder): View? = - (viewHolder as? ViewHolder)?.questionContainer + override fun onBind(viewHolder: RecyclerView.ViewHolder): View? = + (viewHolder as? ViewHolder)?.questionContainer - override fun onClick(v: View, position: Int, fastAdapter: FastAdapter>, item: IItem<*>) { - if (item !is FaqIItem) return - item.isExpanded = !item.isExpanded - v.parentViewGroup.findViewById(R.id.faq_item_answer) - .setExpanded(item.isExpanded) - } - }) + override fun onClick( + v: View, + position: Int, + fastAdapter: FastAdapter>, + item: IItem<*> + ) { + if (item !is FaqIItem) return + item.isExpanded = !item.isExpanded + v.parentViewGroup.findViewById(R.id.faq_item_answer) + .setExpanded(item.isExpanded) + } + }) } } @@ -70,7 +75,7 @@ class FaqIItem(val content: FaqItem) : KauIItem< FaqIItem.ViewHolder>( answer.setExpanded(isExpanded, false) if (accentColor != null) answer.setLinkTextColor(accentColor!!) answer.text = content.answer - answer.post { answer.setPaddingLeft(16.dpToPx + number.width) } + answer.post { answer.setPaddingLeft(16.dpToPx + number.width) } // TODO not performant at all; and doesn't align across all items bindTextColor(number, question) bindTextColorSecondary(answer) val bg2 = backgroundColor?.colorToForeground(0.1f) diff --git a/docs/Changelog.md b/docs/Changelog.md index f8287ca..0078430 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -1,5 +1,8 @@ # Changelog +## v5.2.0 +* :fastadapter: Migrate fastadapter to v4.x.x + ## v5.1.0 * :adapter: Moved fastadapter elements to new module, :fastadapter:. To migrate, simply rename the dependency. If you don't use fast adapter, no changes are necessary * :adapter: Make NoAnimatorChange an object; previously a class 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 e6d4b24..24a37c4 100644 --- a/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/FastItemThemedAdapter.kt +++ b/fastadapter/src/main/kotlin/ca/allanwang/kau/adapters/FastItemThemedAdapter.kt @@ -47,6 +47,13 @@ class FastItemThemedAdapter>( colors.accentColor ) + init { + itemAdapter.interceptor = { + injectTheme(it) + it + } + } + var textColor: Int? = textColor set(value) { if (field == value) return @@ -78,41 +85,6 @@ class FastItemThemedAdapter>( notifyAdapterDataSetChanged() } - override fun add(position: Int, items: List): IItemAdapter { - injectTheme(items) - return super.add(position, items) - } - - override fun add(position: Int, vararg items: Item): IItemAdapter { - injectTheme(items.toList()) - return super.add(position, *items) - } - - override fun add(vararg items: Item): IItemAdapter { - injectTheme(items.toList()) - return super.add(*items) - } - - override fun add(items: List): IItemAdapter { - injectTheme(items) - return super.add(items) - } - - override fun set(items: List): IItemAdapter { - injectTheme(items) - return super.set(items) - } - - override fun set(position: Int, item: Item): IItemAdapter { - injectTheme(item) - return super.set(position, item) - } - - override fun setNewList(items: List, retainFilter: Boolean): IItemAdapter { - injectTheme(items) - return super.setNewList(items, retainFilter) - } - private fun injectTheme(items: Collection?>?) { items?.forEach { injectTheme(it) } } diff --git a/sample/src/main/res/xml/kau_changelog.xml b/sample/src/main/res/xml/kau_changelog.xml index 62614ed..de73b41 100644 --- a/sample/src/main/res/xml/kau_changelog.xml +++ b/sample/src/main/res/xml/kau_changelog.xml @@ -6,6 +6,11 @@ --> + + + + + -- cgit v1.2.3