Skip to content

Instantly share code, notes, and snippets.

@vodamiro
vodamiro / Example.kt
Last active July 17, 2018 13:24
Android - Switching fragments without recreating their instances - Kotlin Extension
...
sealed class Section
object Home : Section()
object Settings : Section()
...
private fun changeSection(section: Section) {
if (currentSection == section) {
@vodamiro
vodamiro / FullscreenWindowExtensions.kt
Last active August 30, 2018 13:36
Extension for `AppCompatActivity` to setup fullscreen window mode with specific status and navigation bar
package com.app.ext
import android.graphics.Color
import android.os.Build
import android.support.v7.app.AppCompatActivity
import android.view.View
/***
*
* Extension for `AppCompatActivity` to setup fullscreen window mode with specific status and
@vodamiro
vodamiro / InterfaceDelegation.kt
Created October 17, 2018 10:01
Delegation of interface
interface MyInterface {
fun methodA()
fun methodB()
}
class MyInterfaceImp: MyInterface {
override fun methodA() {
println("A")
}
override fun methodB() {
@vodamiro
vodamiro / SafeValue.kt
Last active October 18, 2018 08:44
SafeValue and GSON type adapter
package cz.vodamiro.example
data class SafeValue<out T>(val value: T?, val failed: Boolean = false)
@vodamiro
vodamiro / Constructors.kt
Last active April 11, 2019 13:39
Bye Java, hello Kotlin alias What do we love about Kotlin @Synetech
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also(::println)
init {
println("First initializer block that prints ${name}")
}
val secondProperty = "Second property: ${name.length}".also(::println)
init {
@vodamiro
vodamiro / DataClasses.kt
Created April 11, 2019 13:53
S_A_DataClasses.kt
// Example of data class (saved more than 10 lines in comparison to Java)
data class User(val name: String, val surname: String, val age: Int)
// Example of custom getters and setters on a property
class MrUser {
var name: String = ""
get() {
return "Mr. $field" // Get name with "Mr." prefix
}
set(newValue) {
@vodamiro
vodamiro / SealedClasses.kt
Created April 11, 2019 13:54
S_A_SealedClasses.kt
sealed class UIState
object LoadingState : UIState() // Data is being loaded
class DataState(val data: Data) : UIState() // Data loaded successfully
class ErrorState(val error: Throwable) : UIState() // In case of failure
@vodamiro
vodamiro / SealedClasses2.kt
Created April 11, 2019 13:55
S_A_SealedClasses2.kt
fun handleStateChange(newState: UIState) {
when (newState) {
is LoadingState -> println("Loading ...")
is DataState -> println("Got data: ${newState.data}")
is ErrorState -> println("Error: ${newState.error.message}")
}
}
@vodamiro
vodamiro / Extensions.kt
Created April 11, 2019 13:56
S_A_Extensions.kt
fun View.makeInvisible() {
this.visibility = View.INVISIBLE
}
val button: Button = //...
button.makeInvisible()
@vodamiro
vodamiro / SingleExpression.kt
Created April 11, 2019 13:57
S_A_SingleExpression.kt
fun answerToEverything() = 42