61 lines
2.7 KiB
Kotlin
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
|
|
}
|
|
}
|
|
} |