Skip to content

Instantly share code, notes, and snippets.

View alaershov's full-sized avatar

Alexey Ershov alaershov

View GitHub Profile
@alaershov
alaershov / RepositoryModule.java
Created June 4, 2019 17:36
Toothpick: simple bind
public final class RepositoryModule extends Module {
public RepositoryModule() {
bind(UserRepository.class);
}
}
@alaershov
alaershov / RepositoryModule.java
Created June 4, 2019 17:40
Toothpick: bind to instance
public final class RepositoryModule extends Module {
public RepositoryModule(Context context) {
bind(UserRepository.class);
SharedPreferences sharedPreferences = context.getSharedPreferences("app.prefs", MODE_PRIVATE);
bind(SharedPreferences.class).toInstance(sharedPreferences);
}
}
@alaershov
alaershov / PrefUserRepository .java
Last active June 6, 2019 15:49
Toothpick: repository with an interface
public final class PrefUserRepository implements UserRepository {
private final SharedPreferences sharedPreferences;
@Inject
public PrefUserRepository(SharedPreferences sharedPreferences) {
this.sharedPreferences = sharedPreferences;
}
@Override
@alaershov
alaershov / RepositoryModule.java
Created June 4, 2019 17:47
Toothpick: bind to an interface
public final class RepositoryModule extends Module {
public RepositoryModule(Context context) {
bind(UserRepository.class).to(PrefUserRepository.class);
...
}
}
@alaershov
alaershov / RepositoryModule.java
Last active January 8, 2020 12:03
Toothpick: bind to singleton
public final class RepositoryModule extends Module {
public RepositoryModule(Context context) {
bind(UserRepository.class)
.to(PrefUserRepository.class)
.singleton();
}
}
@alaershov
alaershov / App.java
Created June 4, 2019 18:00
Toothpick: sample App
public final class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Scope appScope = Toothpick.openScope("APP");
appScope.installModules(new RepositoryModule(getApplicationContext()));
}
}
@alaershov
alaershov / UserActivity.java
Last active June 11, 2019 06:37
Toothpick: sample Activity
public final class UserActivity extends AppCompatActivity {
@Inject
UserRepository userRepository;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Scope appScope = Toothpick.openScope("APP");
@alaershov
alaershov / RepositoryModule.java
Last active January 8, 2020 12:03
Toothpick: sample Module
public final class RepositoryModule extends Module {
public RepositoryModule(Context context) {
SharedPreferences sharedPreferences = context.getSharedPreferences("app.prefs", MODE_PRIVATE);
bind(SharedPreferences.class).toInstance(sharedPreferences);
bind(UserRepository.class)
.to(PrefUserRepository.class)
.singleton();
}
@alaershov
alaershov / anton_vs_hannes.kt
Created November 11, 2019 08:09
Delegate comparison
// Ханнес
fun movieCell(listener : (Movie) -> Unit) = adapterDelegateLayoutContainer<Movie, RecyclerItem>(R.layout.item_movie) {
itemView.setClickListener { listener.invoke(item) }
bind { diffPayloads ->
name.text = item.name
}
}
@alaershov
alaershov / Module.java
Created January 23, 2020 13:51
Toothpick bind samples
// Допустим, у вас есть интерфейс ProjectRepository, его реализация ProjectServerRepository.
// И вы хотите забиндить интерфейс к реализации.
public class ProjectServerRepository implements ProjectRepository {
@Inject
public ProjectServerRepository(Context context) {...}
}
public class MyModule extends Module {