diff options
Diffstat (limited to 'library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt')
-rw-r--r-- | library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt index 98e977e..169c716 100644 --- a/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt +++ b/library/src/main/kotlin/ca/allanwang/kau/kpref/items/KPrefItemCore.kt @@ -13,6 +13,7 @@ import android.widget.TextView import butterknife.ButterKnife import ca.allanwang.kau.R import ca.allanwang.kau.kpref.KPrefAdapterBuilder +import ca.allanwang.kau.logging.SL import ca.allanwang.kau.utils.* import com.mikepenz.fastadapter.items.AbstractItem import com.mikepenz.iconics.typeface.IIcon @@ -33,6 +34,7 @@ abstract class KPrefItemCore(val builder: KPrefAdapterBuilder, @CallSuper override fun bindView(viewHolder: ViewHolder, payloads: List<Any>) { super.bindView(viewHolder, payloads) + SL.d("BINDVIEW") with(viewHolder) { val context = itemView.context title.text = context.string(this@KPrefItemCore.title) @@ -45,36 +47,31 @@ abstract class KPrefItemCore(val builder: KPrefAdapterBuilder, icon?.setIcon(iicon, 48) } else iconFrame?.gone() innerFrame?.removeAllViews() - setColors(this) - onPostBindView(this, builder) - } - } - - fun setColors(viewHolder: ViewHolder) { - with(viewHolder) { - if (builder.textColor != null) { - title.setTextColor(builder.textColor!!) - desc?.setTextColor(builder.textColor!!) + val textColor = builder.textColor?.invoke() + if (textColor != null) { + title.setTextColor(textColor) + desc?.setTextColor(textColor) } - if (builder.accentColor != null) { - icon?.drawable?.setTint(builder.accentColor!!) + val accentColor = builder.accentColor?.invoke() + if (accentColor != null) { + icon?.drawable?.setTint(accentColor) } + onPostBindView(this, textColor, accentColor) } } - abstract fun onPostBindView(viewHolder: ViewHolder, builder: KPrefAdapterBuilder) + abstract fun onPostBindView(viewHolder: ViewHolder, textColor: Int?, accentColor: Int?) - abstract fun onClick(itemView: View): Boolean + abstract fun onClick(itemView: View, innerContent: View?): Boolean override fun unbindView(holder: ViewHolder) { super.unbindView(holder) + SL.d("UNBINDVIEW") with(holder) { title.text = null desc?.text = null icon?.setImageDrawable(null) - innerFrame?.removeAllViews() - itemView.isEnabled = true - itemView.alpha = 1.0f +// innerFrame?.removeAllViews() } } @@ -84,15 +81,24 @@ abstract class KPrefItemCore(val builder: KPrefAdapterBuilder, val icon: ImageView? by bindOptionalView(R.id.kau_pref_icon) val iconFrame: LinearLayout? by bindOptionalView(R.id.kau_pref_icon_frame) val innerFrame: LinearLayout? by bindOptionalView(R.id.kau_pref_inner_frame) + val innerContent: View? + get() = itemView.findViewById(R.id.kau_pref_inner_content) init { ButterKnife.bind(v) } - fun addInnerView(@LayoutRes id: Int) { - LayoutInflater.from(innerFrame!!.context).inflate(id, innerFrame) + inline fun <reified T : View> bindInnerView(@LayoutRes id: Int): T { + if (innerFrame == null) throw IllegalStateException("Cannot bind inner view when innerFrame does not exist") + if (innerContent !is T) { + innerFrame!!.removeAllViews() + LayoutInflater.from(innerFrame!!.context).inflate(id, innerFrame) + } + return innerContent as T } + inline fun <reified T : View> getInnerView() = innerContent as T + operator fun get(@IdRes id: Int): View = itemView.findViewById(id) } }
\ No newline at end of file |