Skip to content

Instantly share code, notes, and snippets.

View bangarharshit's full-sized avatar

Harshit Bangar bangarharshit

  • Twitter
View GitHub Profile
@bangarharshit
bangarharshit / SealedClasses.java
Last active November 18, 2017 02:04 — forked from rjrjr/java-sealed-class
Poor Man's Sealed Classes (visitor pattern)
/**
* For Java developers all excited by and jealous of Kotlin's sealed classes.
* Do this when you wish you could put parameters on an enum.
*/
public class PoorMan {
private interface Event {
<T> T dispatch(EventHandler<T> handler);
}
interface EventHandler<T> {
public static void main(String[] args) throws InterruptedException {
Observable<String> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
@Override public void subscribe(ObservableEmitter<Integer> e) throws Exception {
System.out.println("emit" + Thread.currentThread().getName());
e.onNext(12);
e.onNext(3232);
}
})
.compose(integerStringObservableTransformer)
import com.trello.rxlifecycle2.LifecycleProvider
import io.reactivex.Observable
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
fun Disposable.disposeWith(compositeDisposable: CompositeDisposable) {
compositeDisposable.add(this)
}
fun <E> Disposable.disposeUntil(e: E, lifecycleProvider: LifecycleProvider<E>) {
Observable.just(1)
.to(AutoDispose.with(RxLifecycleInterop.from(lifecycleProvider)).forObservable())
.subscribe(...)
<?xml version="1.0" encoding="utf-8"?>
<com.harshitbangar.conductormvp.HomeView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
import com.harshitbangar.mvpconductor.BaseView;
class HomeView extends BaseView<HomeController> {
public HomeView(Context context) {
super(context);
inflate(context, R.layout.home, this);
Toolbar toolbar = findView(R.id.toolbar);
toolbar.setNavigationOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
getController().backPress();
import com.harshitbangar.mvpconductor.BaseController;
public class HomeController extends BaseController<HomeView> {
@Override
protected HomeView createView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) {
return (HomeView) inflater.inflate(R.layout.home, container, false);
}
public void backPress() {
public class MainActivity extends AppCompatActivity {
private Router router;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewGroup container = (ViewGroup)findViewById(R.id.controller_container);
router = Conductor.attachRouter(this, container, savedInstanceState);
public static void main(String[] args) throws InterruptedException {
TestSubscriber<Integer> testSubscriber = TestSubscriber.create(5); // For testing backpressure
TestObserver<Integer> testObserver = TestObserver.create(); // For testing observable.
Flowable<Integer> integerFlowable = getListOfStudentsFlowable();
Observable<Integer> observable = getListOfStudents();
observable.subscribe(testObserver);
integerFlowable.subscribe(testSubscriber);
testObserver.assertValueCount(100);
testSubscriber.assertValueCount(5);
}
ConnectableObservable<String> remoteUserIdObservable =
mUserClient
.login()
.map(this::checkNonNull)
.doOnNext(this::logIn)
.map(UserModel::_id);
Observable<String> outputObservable = Observable
.concat(mSessionManager.getUserIdAsObservable(), remoteUserIdObservable);
public Observable<String> getUserIdAsObservable() {