Skip to content

Instantly share code, notes, and snippets.

View pawegio's full-sized avatar
🧉

Paweł Gajda pawegio

🧉
View GitHub Profile
data class Report(val uuid: String, val name: String, val date: Long)
fun loadReport(uuid: String) {
api.getReport(uuid) { (_, name, date) ->
reportView.text = name
dateView.text = formatDate(date)
}
}
fun doSthWithReport(report: Report) = when (report) {
is HourlyReport -> view.showHours(report.hours)
is DailyReport -> view.showDate(report.date)
//else -> throw IllegalArgumentException() <- NOT NEEDED!
}
sealed class Report {
abstract val uuid: String
abstract val date: String
}
data class HourlyReport(
override val uuid: String,
override val date: String,
val hours: Int) : Report()
package inheritance
sealed class S // no { here
class A : S()
class B : S() {
// ...
}
val Context.alarmManager
inline get() = getSystemService(Context.ALARM_SERVICE) as AlarmManager?
inline val Context.alarmManager
get() = getSystemService(Context.ALARM_SERVICE) as AlarmManager?
typealias ItemAction = (Item, Int, Boolean) -> Unit
open class ViewHolder(view: View, val action: ItemAction? = null) : RecyclerView.ViewHolder(view) {
// ...
}
class AViewHolder(view: View, action: ItemAction? = null) : ViewHolder(view, action) {
// ...
}
open class ViewHolder(view: View, val action: ((Item) -> Unit)? = null) : RecyclerView.ViewHolder(view) {
// ...
}
class AViewHolder(view: View, action: ((Item) -> Unit)? = null) : ViewHolder(view, action) {
// ...
}
class BViewHolder(view: View, action: ((Item) -> Unit)? = null) : ViewHolder(view, action) {
// ...
class ViewHolder(view: View, val action: ((Item) -> Unit)? = null) : RecyclerView.ViewHolder(view) {
fun bind(item: Item) {
itemView.setOnClickListener { action?.invoke(item) }
}
}
fun loadUser(id: Int) = async {
val user = api.getUser(id).await() // not blocking main thread
textView.text = "User: ${user.name}"
}