Skip to content

Instantly share code, notes, and snippets.

View NinoDLC's full-sized avatar

Nino NinoDLC

  • Lyon, France
View GitHub Profile
public class NearbyRestaurantsRepository {
private static final String TYPE = "restaurant";
// Round the GPS coordinate to avoid re-querying Google for a position that would be only a few meters away
private static final int GPS_SCALE = 2;
@NonNull
private final NearbyRestaurantsApi nearbyRestaurantsApi;
@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 / 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 / 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 / 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
@NinoDLC
NinoDLC / SingleLiveEvent.java
Last active December 28, 2021 17:40
SingleLiveEvent.java
import android.util.Log;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import java.util.concurrent.atomic.AtomicBoolean;