Skip to content

Instantly share code, notes, and snippets.

View tolmachevroman's full-sized avatar

Roman Tolmachev tolmachevroman

  • Santiago, Chile
View GitHub Profile
@tolmachevroman
tolmachevroman / CircleSpan.java
Created December 14, 2015 17:28
Tabs with numbers like in WhatsApp
package com.cornershopapp.shopper.android.utils;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.text.style.ReplacementSpan;
import com.cornershopapp.shopper.android.R;
/**
@tolmachevroman
tolmachevroman / RestaurantsMapActivity.kt
Last active November 26, 2017 05:16
Medium Post 2. onMapLoaded()
override fun onMapLoaded() {
restaurantsViewModel.restaurants
.observe(this, Observer<Resource<List<Restaurant>>> { resource ->
when (resource?.status) {
Resource.Status.SUCCESS -> {
hideLoading()
if (resource.data != null && resource.data.isNotEmpty()) {
showMarkers(resource.data)
}
@tolmachevroman
tolmachevroman / BuildersModule.kt
Last active November 26, 2017 05:16
Medium Post 2. BuildersModule
@Module
abstract class BuildersModule {
@ContributesAndroidInjector
abstract fun contributeRestaurantsMapActivity(): RestaurantsMapActivity
}
@tolmachevroman
tolmachevroman / RestaurantsMapActivity.kt
Last active November 26, 2017 05:15
Medium Post 2. AndroidInjection
class RestaurantsMapActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_restaurants_map)
// ...
}
}
@tolmachevroman
tolmachevroman / RestaurantsViewModel.kt
Last active November 26, 2017 05:15
Medium Post 2. RestaurantsViewModel
class RestaurantsViewModel @Inject constructor(private val repository: RestaurantsRepository) : ViewModel() {
var initialized = false
var cuisineInput: MutableLiveData<Int> = MutableLiveData()
val restaurants: LiveData<Resource<List<Restaurant>>> = Transformations
.switchMap(cuisineInput) { cuisine ->
initialized = true; repository.getRestaurants(cuisine)
}
@tolmachevroman
tolmachevroman / ViewModelFactory.kt
Last active November 26, 2017 05:14
Medium Post 2. ViewModelFactory
@Singleton
class ViewModelFactory @Inject constructor(private val creators: Map<Class<out ViewModel>, @JvmSuppressWildcards Provider<ViewModel>>?) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
var creator = creators!![modelClass]
if (creator == null) {
for (entry in creators.entries) {
if (modelClass.isAssignableFrom(entry.key)) {
@tolmachevroman
tolmachevroman / RestaurantsMapActivity.kt
Last active November 26, 2017 05:14
Medium Post 2. ViewModel instantiation
class RestaurantsMapActivity : AppCompatActivity() {
private lateinit var restaurantsViewModel: RestaurantsViewModel
override fun onCreate(savedInstanceState: Bundle?) {
// ...
restaurantsViewModel = ViewModelProviders.of(this, viewModelFactory)
.get(RestaurantsViewModel::class.java)
}
@tolmachevroman
tolmachevroman / build.gradle
Last active November 26, 2017 05:14
Medium Post 2. vectorDrawables.useSupportLibrary
android {
// ...
defaultConfig {
// ...
vectorDrawables.useSupportLibrary = true
}
}
@tolmachevroman
tolmachevroman / Utils.kt
Last active November 26, 2017 05:13
Medium Post 2. Utils
@Singleton
class Utils @Inject constructor(private val context: Context) {
fun getBitmap(drawableId: Int): Bitmap {
val drawable = ContextCompat.getDrawable(context, drawableId)
return when (drawable) {
is BitmapDrawable -> BitmapFactory.decodeResource(context.resources, drawableId)
is VectorDrawable -> getBitmap(drawable)
else -> throw IllegalArgumentException("unsupported drawable type")
}
@tolmachevroman
tolmachevroman / RestaurantsMapActivity.kt
Last active November 26, 2017 05:13
Medium Post 2. constructMarkerOptions
@Inject lateinit var utils: Utils
private fun constructMarkerOptions(restaurant: Restaurant): MarkerOptions {
val point = LatLng(restaurant.lat, restaurant.lng)
val icon = when (restaurant.cuisine) {
1 -> BitmapDescriptorFactory.fromBitmap(utils.getBitmap(R.drawable.ic_peru))
2 -> BitmapDescriptorFactory.fromBitmap(utils.getBitmap(R.drawable.ic_italy))
3 -> BitmapDescriptorFactory.fromBitmap(utils.getBitmap(R.drawable.ic_chile))
else -> null
}