Skip to content

Instantly share code, notes, and snippets.

@tfcporciuncula
tfcporciuncula / TextViewExtensions.kt
Created January 30, 2019 07:59
TextView extension to dynamically set maxLines
fun TextView.setMaxLinesToEllipsize() = doOnPreDraw {
val numberOfCompletelyVisibleLines = (measuredHeight - paddingTop - paddingBottom) / lineHeight
maxLines = numberOfCompletelyVisibleLines
}
@tfcporciuncula
tfcporciuncula / activity_main.xml
Created February 6, 2019 17:47
Autosizing and ellipsize
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="200dp"
android:layout_height="100dp"
@tfcporciuncula
tfcporciuncula / activity_main.xml
Created February 6, 2019 17:48
Autosizing and word splitting
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="200dp"
android:layout_height="100dp"
@tfcporciuncula
tfcporciuncula / BestPostActivity.kt
Created March 20, 2019 19:01
BestPostActivity.kt
private val viewModel by lazy {
// this is what we had
//ViewModelProviders.of(this, injector.bestPostViewModelFactory()).get(BestPostViewModel::class.java)
// this is what we want now
val viewModelFactory = injector.with(BestPostModule(myIntFromView = 10)).bestPostViewModelFactory()
ViewModelProviders.of(this, viewModelFactory).get(BestPostViewModel::class.java)
}
@tfcporciuncula
tfcporciuncula / ApplicationComponent.kt
Created March 20, 2019 19:02
ApplicationComponent.kt
@Singleton
@Component(modules = ...)
interface ApplicationComponent {
...
//fun bestPostViewModelFactory(): ViewModelFactory<BestPostViewModel>
fun with(postDetailsModule: BestPostModule): BestPostComponent
}
@tfcporciuncula
tfcporciuncula / BestPostInjection.kt
Created March 20, 2019 19:02
BestPostInjection.kt
@Subcomponent(modules = [BestPostModule::class])
interface BestPostComponent {
fun bestPostViewModelFactory(): ViewModelFactory<BestPostViewModel>
}
@Module
class BestPostModule(@get:Provides val myIntFromView: Int)
@tfcporciuncula
tfcporciuncula / build.gradle
Last active August 10, 2019 10:21
build.gradle
compileOnly 'com.squareup.inject:assisted-inject-annotations-dagger2:0.5.0'
kapt 'com.squareup.inject:assisted-inject-processor-dagger2:0.5.0'
@tfcporciuncula
tfcporciuncula / BestPostViewModel.kt
Created March 21, 2019 21:16
BestPostViewModel
class BestPostViewModel @AssistedInject constructor(
...
@Assisted myIntFromView: Int
) : ViewModel() {
@AssistedInject.Factory
interface Factory {
fun create(myIntFromView: Int): BestPostViewModel
}
@tfcporciuncula
tfcporciuncula / BestPostActivity.kt
Created March 21, 2019 21:18
BestPostActivity.kt
private val viewModel by viewModel(this) {
injector.bestPostViewModelFactory.create(myIntFromView = 10)
}
@tfcporciuncula
tfcporciuncula / ApplicationComponent.kt
Created March 21, 2019 21:23
ApplicationComponent.kt
@Singleton
@Component(modules = [RetrofitModule::class, AssistedInjectModule::class])
interface ApplicationComponent {
...
val bestPostViewModelFactory: BestPostViewModel.Factory
}
@AssistedModule
@Module(includes = [AssistedInject_AssistedInjectModule::class])