Skip to content

Instantly share code, notes, and snippets.

View NinoDLC's full-sized avatar

Nino NinoDLC

  • Lyon, France
View GitHub Profile
@NinoDLC
NinoDLC / ViewBindingDelegate.kt
Created August 26, 2022 13:53
ViewBinding delegates
@file:Suppress("unused")
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.Lifecycle
@NinoDLC
NinoDLC / AndroidManifest.xml
Created August 23, 2022 12:38
OC - P7: Go4Lunch - MVVM Example for DispatcherActivity
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.delcey.go4lunch">
<application
...
>
<activity
android:name=".view.dispatcher.DispatcherActivity"
@NinoDLC
NinoDLC / MapFragment.java
Created August 17, 2022 10:07
OC - P7: Go4Lunch - MVVM Example for MapFragment
public class MapFragment extends SupportMapFragment {
public static MapFragment newInstance() {
return new MapFragment();
}
private MapViewModel viewModel;
private GoogleMap googleMap;
@NinoDLC
NinoDLC / MultipleDetailsDemo.kt
Created May 6, 2022 07:52
Query multiple details in parallel with coroutines async / awaitAll()
import kotlinx.coroutines.*
import java.io.IOException
object MultipleDetailsDemo {
@JvmStatic
fun main(args: Array<String>) = runBlocking {
val start = System.currentTimeMillis()
val detailEntities: List<DetailEntity> = try {
val ids = listOf(0, 1, 2)
@NinoDLC
NinoDLC / DataInterpolationRepository.kt
Last active May 6, 2022 15:25
DataInterpolationRepository
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.launch
@NinoDLC
NinoDLC / InterpolationRepository.kt
Last active May 6, 2022 15:10
InterpolationRepository
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.launch
@NinoDLC
NinoDLC / TestCoroutineRule.kt
Created January 10, 2022 17:39
TestCoroutineRule.kt
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.*
import org.junit.rules.TestRule
import org.junit.runner.Description
import org.junit.runners.model.Statement
@ExperimentalCoroutinesApi
class TestCoroutineRule : TestRule {
val testCoroutineDispatcher = UnconfinedTestDispatcher()
@NinoDLC
NinoDLC / TestCoroutineRule.kt
Created December 28, 2021 18:28
TestCoroutineRule.kt
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.TestCoroutineScope
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runBlockingTest
import kotlinx.coroutines.test.setMain
import org.junit.rules.TestRule
import org.junit.runner.Description
import org.junit.runners.model.Statement
Intent intent = MeetingDetailActivity.navigate(this, meetingId);
Pair<View, String> imageViewPair = new Pair<>(imageView, imageView.getTransitionName());
Pair<View, String> textViewPair = new Pair<>(textView, textView.getTransitionName());
@SuppressWarnings("unchecked")
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
this,
imageViewPair,
textViewPair
@ColorRes
fun getTypeColorRes(type: String?): Int? = when (type) {
"normal" -> R.color.type_normal
"fire" -> R.color.type_fire
"water" -> R.color.type_water
"electric" -> R.color.type_electric
"grass" -> R.color.type_grass
"ice" -> R.color.type_ice
"fighting" -> R.color.type_fighting