Skip to content

Commit 0424f75

Browse files
Merge pull request amitshekhariitbhu#19 from WeRockStar/ws
Add compose for reusable code
2 parents e8fbc22 + 0061559 commit 0424f75

9 files changed

Lines changed: 133 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ RxJava1 -> RxJava2
102102
* [IntervalExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java) - Using `Interval`
103103
* [RxBusActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java) - RxBus, RxJava2Bus, EventBus, RxEventBus
104104
* [PaginationActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java) - Pagination for loadMore in RecyclerView
105+
* [ComposeOperatorExampleActivity](https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/compose/ComposeOperatorExampleActivity.java) - Compose operator for reusable
105106

106107
### TODO
107108

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@
120120
<activity
121121
android:name=".ui.operators.DelayExampleActivity"
122122
android:label="@string/delay" />
123+
<activity android:name=".ui.compose.ComposeOperatorExampleActivity"
124+
android:label="@string/compose"
125+
/>
123126
</application>
124127

125128
</manifest>

app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import com.rxjava2.android.samples.MyApplication;
99
import com.rxjava2.android.samples.R;
10+
import com.rxjava2.android.samples.ui.compose.ComposeOperatorExampleActivity;
1011
import com.rxjava2.android.samples.ui.networking.NetworkingActivity;
1112
import com.rxjava2.android.samples.ui.pagination.PaginationActivity;
1213
import com.rxjava2.android.samples.ui.rxbus.RxBusActivity;
@@ -35,4 +36,8 @@ public void startRxBusActivity(View view) {
3536
public void startPaginationActivity(View view) {
3637
startActivity(new Intent(SelectionActivity.this, PaginationActivity.class));
3738
}
39+
40+
public void startComposeOperator(View view) {
41+
startActivity(new Intent(SelectionActivity.this, ComposeOperatorExampleActivity.class));
42+
}
3843
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.rxjava2.android.samples.ui.compose;
2+
3+
import android.os.Bundle;
4+
import android.support.v7.app.AppCompatActivity;
5+
6+
import com.rxjava2.android.samples.R;
7+
8+
import io.reactivex.Flowable;
9+
import io.reactivex.Observable;
10+
11+
public class ComposeOperatorExampleActivity extends AppCompatActivity {
12+
13+
private RxSchedulers schedulers = new RxSchedulers();
14+
15+
@Override
16+
protected void onCreate(Bundle savedInstanceState) {
17+
super.onCreate(savedInstanceState);
18+
setContentView(R.layout.activity_compose_operator_example);
19+
20+
/*
21+
Compose for reusable code.
22+
*/
23+
Observable.just(1, 2, 3, 4, 5)
24+
.compose(schedulers.<Integer>applyObservableAsync())
25+
.subscribe(/* */);
26+
27+
Flowable.just(1, 2, 3, 4, 5)
28+
.compose(schedulers.<Integer>applyFlowableAsysnc())
29+
.subscribe(/* */);
30+
31+
}
32+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.rxjava2.android.samples.ui.compose;
2+
3+
import org.reactivestreams.Publisher;
4+
5+
import io.reactivex.Flowable;
6+
import io.reactivex.FlowableTransformer;
7+
import io.reactivex.Observable;
8+
import io.reactivex.ObservableSource;
9+
import io.reactivex.ObservableTransformer;
10+
import io.reactivex.android.schedulers.AndroidSchedulers;
11+
import io.reactivex.schedulers.Schedulers;
12+
13+
/**
14+
* Created by werockstar on 5/19/2017.
15+
*/
16+
17+
public class RxSchedulers {
18+
19+
public <T> ObservableTransformer<T, T> applyObservableAsync() {
20+
return new ObservableTransformer<T, T>() {
21+
@Override
22+
public ObservableSource<T> apply(Observable<T> observable) {
23+
return observable.subscribeOn(Schedulers.io())
24+
.observeOn(AndroidSchedulers.mainThread());
25+
}
26+
};
27+
}
28+
29+
public <T> ObservableTransformer<T, T> applyObservableCompute() {
30+
return new ObservableTransformer<T, T>() {
31+
@Override
32+
public ObservableSource<T> apply(Observable<T> observable) {
33+
return observable.subscribeOn(Schedulers.computation())
34+
.observeOn(AndroidSchedulers.mainThread());
35+
}
36+
};
37+
}
38+
39+
public <T> ObservableTransformer<T, T> applyObservableMainThread() {
40+
return new ObservableTransformer<T, T>() {
41+
@Override
42+
public ObservableSource<T> apply(Observable<T> observable) {
43+
return observable.observeOn(AndroidSchedulers.mainThread());
44+
}
45+
};
46+
}
47+
48+
public <T> FlowableTransformer<T, T> applyFlowableMainThread() {
49+
return new FlowableTransformer<T, T>() {
50+
@Override
51+
public Publisher<T> apply(Flowable<T> flowable) {
52+
return flowable.observeOn(AndroidSchedulers.mainThread());
53+
}
54+
};
55+
}
56+
57+
public <T> FlowableTransformer<T, T> applyFlowableAsysnc() {
58+
return new FlowableTransformer<T, T>() {
59+
@Override
60+
public Publisher<T> apply(Flowable<T> flowable) {
61+
return flowable.observeOn(AndroidSchedulers.mainThread());
62+
}
63+
};
64+
}
65+
66+
public <T> FlowableTransformer<T, T> applyFlowableCompute() {
67+
return new FlowableTransformer<T, T>() {
68+
@Override
69+
public Publisher<T> apply(Flowable<T> flowable) {
70+
return flowable.observeOn(AndroidSchedulers.mainThread());
71+
}
72+
};
73+
}
74+
75+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent"
6+
tools:context="com.rxjava2.android.samples.ui.compose.ComposeOperatorExampleActivity">
7+
8+
</FrameLayout>

app/src/main/res/layout/activity_selection.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,12 @@
4343
android:text="@string/pagination"
4444
android:textColor="@android:color/black" />
4545

46+
<Button
47+
android:layout_width="match_parent"
48+
android:layout_height="wrap_content"
49+
android:onClick="startComposeOperator"
50+
android:text="@string/compose"
51+
android:textColor="@android:color/black" />
52+
4653
</LinearLayout>
4754
</ScrollView>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,5 @@
3939
<string name="flatMapWithZip">flatMapWithZip</string>
4040
<string name="click_me">Click Me</string>
4141
<string name="rx_bus">RxBus</string>
42+
<string name="compose">Compose for reusable</string>
4243
</resources>

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip

0 commit comments

Comments
 (0)