conventionschedule-android/app/src/main/java/com/adlerosn/brasilfurfest/schedule/adapters/ConventionRulesAdapter.kt

61 lines
2.7 KiB
Kotlin

package com.adlerosn.brasilfurfest.schedule.adapters
import android.content.Context
import androidx.core.content.ContextCompat
import android.view.View
import android.view.ViewGroup
import com.adlerosn.brasilfurfest.R
import com.adlerosn.brasilfurfest.helper.*
import com.adlerosn.brasilfurfest.schedule.abstractDataTypes.convention.Convention
import com.adlerosn.brasilfurfest.schedule.viewHolders.RecyclerViewHolder
import kotlinx.android.synthetic.main.fragment_rules_item.view.*
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.uiThread
class ConventionRulesAdapter(convention: Convention): RecyclerViewAdapter() {
val data = listOf(
fun (context: Context) = Pair(context.getString(R.string.convention_rules), convention.rules.solved!!.toHtml())
) + convention.additionalRules.map {
fun (_: Context) = Pair(it.names.solved!!, it.rules.solved!!.toHtml())
}
override fun getItemCount(): Int = data.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerViewHolder =
RecyclerViewHolder(parent.context.layoutInflater.inflate(R.layout.fragment_rules_item).apply {
val postAnimation = Runnable {
expandable.postOnAnimation {
doAsync {
Thread.sleep(expandable.duration.toLong()+100)
uiThread {
expandIcon.setImageResource(
if (expandable.isCollapsed) {
R.drawable.ic_expand_more_black_24dp
}
else {
R.drawable.ic_expand_less_black_24dp
}
)
fulltext.setTextIsSelectable(!expandable.isCollapsed)
}
}
}
}
val toggleRunner = Runnable {
expandIcon.setImageResource(R.drawable.ic_more_horiz_black_24dp)
expandable.toggle(true)
postAnimation.run()
}
expandBar.setOnClickListener { toggleRunner.run() }
expandable.setOnClickListener { if(expandable.isCollapsed){ toggleRunner.run() } }
collapser.setOnClickListener { if(!expandable.isCollapsed){ toggleRunner.run() } }
})
override fun onBindViewHolder(holder: RecyclerViewHolder, position: Int) {
holder.itemView.apply {
val item = data[position](context)
ruleTitle.text = item.first
fulltext.text = item.second
}
}
}