Skip to content

Instantly share code, notes, and snippets.

:octocat:
I've set my status

ViksaaSkool ViksaaSkool

:octocat:
I've set my status
Block or report user

Report or block ViksaaSkool

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@ViksaaSkool
ViksaaSkool / KotlinGenerics.kt
Last active Dec 9, 2018
Example for Kotlin Generics - MyKotlinSharedPreference call when storing/retrieving any type of primitive data
View KotlinGenerics.kt
//One very powerful example of Generics might in combination with delegates is creation of SharedPreferences support
//taken from Kotlin for Android Developers by Antonio Leiva
class MyKotlinSharedPreference<T>(val context: Context, val name: String, val default: T) {
val prefs by lazy {
context.getSharedPreferences("default", Context.MODE_PRIVATE)
}
//operator overloading
@ViksaaSkool
ViksaaSkool / HigherOrderFunctions.kt
Last active Dec 9, 2018
Higher-order functions
View HigherOrderFunctions.kt
/* With */
//receives an object, and a function that will be executed as an extension function, which means that with can be used
//inside of a function to refere to the object, i.e. do something "with"
inline fun <T, R> with(receiver: T, f: T.() -> R): R = receiver.f()
//example
fun getPersonFromDeveloper(developer: Developer): Person {
return with(developer) {
Person(developerName, developerAge)
}
View DelegatedProperties.kt
//we have class called Delegate that defines how to get and set values
class Delegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "$thisRef, thank you for delegating '${property.name}' to me!"
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("$value has been assigned to '${property.name}' in $thisRef.")
}
}
View UtilsAndExtensions.kt
//A higher-order function is a function that takes functions as parameters, or returns a function. kotlin has the power
//to pass around functions
/* Lambdas */
//by definition, lambda expressions are functions that are not declared, but passed immediately as an expression
//surrounded by curly braces and the body goes after ->
//very basic definition
val sum = { x: Int, y: Int -> x + y }
View KotlinBasics.kt
/* Declaring variables */
//[val/var] name_of_variable : [type] = value
//no need for ; at the end of the line
val a: Int = 1
var b: String = "NullPointerException is dead"
var c: Double? = 0.4
//val - read only value, constant
@ViksaaSkool
ViksaaSkool / PerfectLoopMediaPlayer.java
Last active Jan 22, 2019
PerfectLoopMediaPlayer because it's 2017 and this is still an issue on Android
View PerfectLoopMediaPlayer.java
import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.util.Log;
import java.io.IOException;
/**
* Created by viksaaskool on 13-04-2017.
*/
@ViksaaSkool
ViksaaSkool / DrawableMatcher.java
Last active Mar 25, 2017
DrawableMatcher for medium article https://is.gd/Ru0XVF
View DrawableMatcher.java
public class DrawableMatcher extends TypeSafeMatcher<View> {
private final int expectedId;
private String resourceName;
private int isAnimatedDrawable = -1;
private int randomFrame = 0;
public DrawableMatcher(int expectedId) {
super(View.class);
You can’t perform that action at this time.