From 4923daca8321c14084415349e72d6757a96ae7ee Mon Sep 17 00:00:00 2001 From: amitshekhariitbhu Date: Mon, 27 May 2019 11:59:22 +0530 Subject: [PATCH 1/7] Setup kotlin --- app/build.gradle | 25 ++- app/src/main/AndroidManifest.xml | 86 +-------- .../android/samples/MyApplication.java | 42 ----- .../android/samples/ui/OperatorsActivity.java | 125 +------------ .../android/samples/ui/SelectionActivity.java | 26 +-- .../ui/cache/CacheExampleActivity.java | 93 ---------- .../android/samples/ui/cache/model/Data.java | 12 -- .../samples/ui/cache/source/DataSource.java | 41 ----- .../ui/cache/source/DiskDataSource.java | 28 --- .../ui/cache/source/MemoryDataSource.java | 28 --- .../ui/cache/source/NetworkDataSource.java | 22 --- .../ComposeOperatorExampleActivity.java | 32 ---- .../samples/ui/compose/RxSchedulers.java | 75 -------- .../ui/networking/NetworkingActivity.java | 59 +----- .../AsyncSubjectExampleActivity.java | 132 -------------- .../BehaviorSubjectExampleActivity.java | 134 -------------- .../ui/operators/BufferExampleActivity.java | 104 ----------- .../CompletableObserverExampleActivity.java | 81 --------- .../ui/operators/DebounceExampleActivity.java | 116 ------------ .../ui/operators/DeferExampleActivity.java | 91 ---------- .../operators/DisposableExampleActivity.java | 5 +- .../ui/operators/DistinctExampleActivity.java | 83 --------- .../ui/operators/FlowableExampleActivity.java | 81 --------- .../ui/operators/IntervalExampleActivity.java | 96 ---------- .../LastOperatorExampleActivity.java | 79 -------- .../PublishSubjectExampleActivity.java | 131 -------------- .../ui/operators/ReduceExampleActivity.java | 91 ---------- .../ui/operators/ReplayExampleActivity.java | 130 -------------- .../ReplaySubjectExampleActivity.java | 130 -------------- .../ui/operators/ScanExampleActivity.java | 93 ---------- .../ui/operators/SimpleExampleActivity.java | 3 +- .../SingleObserverExampleActivity.java | 72 -------- .../ui/operators/SkipExampleActivity.java | 92 ---------- .../operators/SwitchMapExampleActivity.java | 105 ----------- .../ui/operators/TakeExampleActivity.java | 92 ---------- .../operators/TakeOperatorBaseActivity.java | 71 -------- .../operators/TakeUntilExampleActivity.java | 45 ----- .../operators/TakeWhileExampleActivity.java | 35 ---- .../ThrottleFirstExampleActivity.java | 121 ------------- .../ThrottleLastExampleActivity.java | 120 ------------- .../ui/operators/WindowExampleActivity.java | 77 -------- .../ui/operators/ZipExampleActivity.java | 3 +- .../ui/pagination/PaginationActivity.java | 130 -------------- .../ui/pagination/PaginationAdapter.java | 60 ------- .../android/samples/ui/rxbus/RxBus.java | 28 --- .../samples/ui/rxbus/RxBusActivity.java | 70 -------- .../samples/utils/ObserverAdapter.java | 31 ---- .../rxjava2/android/samples/utils/Utils.java | 2 +- .../activity_compose_operator_example.xml | 8 - .../main/res/layout/activity_networking.xml | 12 +- .../main/res/layout/activity_operators.xml | 170 +----------------- .../main/res/layout/activity_pagination.xml | 22 --- app/src/main/res/layout/activity_rxbus.xml | 25 --- .../main/res/layout/activity_selection.xml | 30 +--- app/src/main/res/layout/item_pagination.xml | 8 - app/src/main/res/values/strings.xml | 31 +--- build.gradle | 4 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 58 files changed, 49 insertions(+), 3693 deletions(-) delete mode 100644 app/src/main/java/com/rxjava2/android/samples/MyApplication.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/cache/CacheExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/cache/model/Data.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DataSource.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DiskDataSource.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/cache/source/MemoryDataSource.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/cache/source/NetworkDataSource.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/compose/ComposeOperatorExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/compose/RxSchedulers.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/AsyncSubjectExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/BehaviorSubjectExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/BufferExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/CompletableObserverExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/DebounceExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/DeferExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/DistinctExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/FlowableExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/LastOperatorExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/PublishSubjectExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/ReduceExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplayExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplaySubjectExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/ScanExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/SingleObserverExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/SkipExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/SwitchMapExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeOperatorBaseActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeUntilExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeWhileExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleFirstExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleLastExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/operators/WindowExampleActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationAdapter.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBus.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java delete mode 100644 app/src/main/java/com/rxjava2/android/samples/utils/ObserverAdapter.java delete mode 100644 app/src/main/res/layout/activity_compose_operator_example.xml delete mode 100644 app/src/main/res/layout/activity_pagination.xml delete mode 100644 app/src/main/res/layout/activity_rxbus.xml delete mode 100644 app/src/main/res/layout/item_pagination.xml diff --git a/app/build.gradle b/app/build.gradle index fe13a5b..642bb95 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,8 +1,10 @@ apply plugin: 'com.android.application' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-android' android { compileSdkVersion 28 - buildToolsVersion "28.0.2" + buildToolsVersion "28.0.3" defaultConfig { applicationId "com.rxjava2.android.samples" @@ -26,16 +28,23 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' - androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' - androidTestImplementation 'androidx.test:rules:1.1.0-alpha4' - implementation 'androidx.appcompat:appcompat:1.0.0-rc02' - implementation 'androidx.recyclerview:recyclerview:1.0.0-rc02' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0-beta01' + androidTestImplementation 'androidx.test:runner:1.2.0-beta01' + androidTestImplementation 'androidx.test:rules:1.2.0-beta01' + implementation 'androidx.appcompat:appcompat:1.1.0-alpha05' + implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha05' // RxJava2 Dependencies - implementation 'io.reactivex.rxjava2:rxjava:2.2.2' - implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' + implementation 'io.reactivex.rxjava2:rxjava:2.2.7' + implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' // FastAndroidNetworking Dependency implementation 'com.amitshekhar.android:rx2-android-networking:1.0.2' + + // kotlin + implementation "androidx.core:core-ktx:1.0.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} +repositories { + mavenCentral() } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 720343a..344101c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,8 +5,7 @@ - - - @@ -48,96 +38,22 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/MyApplication.java b/app/src/main/java/com/rxjava2/android/samples/MyApplication.java deleted file mode 100644 index 781cb30..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/MyApplication.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.rxjava2.android.samples; - -import android.app.Application; - -import com.rxjava2.android.samples.model.Events; -import com.rxjava2.android.samples.ui.rxbus.RxBus; - -import java.util.concurrent.TimeUnit; - -import io.reactivex.Observable; -import io.reactivex.functions.Consumer; - -/** - * Created by threshold on 2017/1/12. - */ - -public class MyApplication extends Application { - - public static final String TAG = "MyApplication"; - private RxBus bus; - - @Override - public void onCreate() { - super.onCreate(); - bus = new RxBus(); - } - - public RxBus bus() { - return bus; - } - - public void sendAutoEvent() { - Observable.timer(2, TimeUnit.SECONDS) - .subscribe(new Consumer() { - @Override - public void accept(Long aLong) { - bus.send(new Events.AutoEvent()); - } - }); - } - -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.java index 3986c9a..43ab72c 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/OperatorsActivity.java @@ -4,43 +4,19 @@ import android.os.Bundle; import android.view.View; +import androidx.appcompat.app.AppCompatActivity; + import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.ui.operators.AsyncSubjectExampleActivity; -import com.rxjava2.android.samples.ui.operators.BehaviorSubjectExampleActivity; -import com.rxjava2.android.samples.ui.operators.BufferExampleActivity; -import com.rxjava2.android.samples.ui.operators.CompletableObserverExampleActivity; import com.rxjava2.android.samples.ui.operators.ConcatExampleActivity; -import com.rxjava2.android.samples.ui.operators.DebounceExampleActivity; -import com.rxjava2.android.samples.ui.operators.DeferExampleActivity; import com.rxjava2.android.samples.ui.operators.DelayExampleActivity; import com.rxjava2.android.samples.ui.operators.DisposableExampleActivity; -import com.rxjava2.android.samples.ui.operators.DistinctExampleActivity; import com.rxjava2.android.samples.ui.operators.FilterExampleActivity; -import com.rxjava2.android.samples.ui.operators.FlowableExampleActivity; -import com.rxjava2.android.samples.ui.operators.IntervalExampleActivity; -import com.rxjava2.android.samples.ui.operators.LastOperatorExampleActivity; import com.rxjava2.android.samples.ui.operators.MapExampleActivity; import com.rxjava2.android.samples.ui.operators.MergeExampleActivity; -import com.rxjava2.android.samples.ui.operators.PublishSubjectExampleActivity; -import com.rxjava2.android.samples.ui.operators.ReduceExampleActivity; -import com.rxjava2.android.samples.ui.operators.ReplayExampleActivity; -import com.rxjava2.android.samples.ui.operators.ReplaySubjectExampleActivity; -import com.rxjava2.android.samples.ui.operators.ScanExampleActivity; import com.rxjava2.android.samples.ui.operators.SimpleExampleActivity; -import com.rxjava2.android.samples.ui.operators.SingleObserverExampleActivity; -import com.rxjava2.android.samples.ui.operators.SkipExampleActivity; -import com.rxjava2.android.samples.ui.operators.SwitchMapExampleActivity; -import com.rxjava2.android.samples.ui.operators.TakeExampleActivity; -import com.rxjava2.android.samples.ui.operators.TakeUntilExampleActivity; -import com.rxjava2.android.samples.ui.operators.TakeWhileExampleActivity; -import com.rxjava2.android.samples.ui.operators.ThrottleFirstExampleActivity; -import com.rxjava2.android.samples.ui.operators.ThrottleLastExampleActivity; import com.rxjava2.android.samples.ui.operators.TimerExampleActivity; -import com.rxjava2.android.samples.ui.operators.WindowExampleActivity; import com.rxjava2.android.samples.ui.operators.ZipExampleActivity; -import androidx.appcompat.app.AppCompatActivity; - public class OperatorsActivity extends AppCompatActivity { @Override @@ -65,54 +41,14 @@ public void startDisposableActivity(View view) { startActivity(new Intent(OperatorsActivity.this, DisposableExampleActivity.class)); } - public void startTakeActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, TakeExampleActivity.class)); - } - public void startTimerActivity(View view) { startActivity(new Intent(OperatorsActivity.this, TimerExampleActivity.class)); } - public void startIntervalActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, IntervalExampleActivity.class)); - } - - public void startSingleObserverActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, SingleObserverExampleActivity.class)); - } - - public void startCompletableObserverActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, CompletableObserverExampleActivity.class)); - } - - public void startFlowableActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, FlowableExampleActivity.class)); - } - - public void startReduceActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, ReduceExampleActivity.class)); - } - - public void startBufferActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, BufferExampleActivity.class)); - } - public void startFilterActivity(View view) { startActivity(new Intent(OperatorsActivity.this, FilterExampleActivity.class)); } - public void startSkipActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, SkipExampleActivity.class)); - } - - public void startScanActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, ScanExampleActivity.class)); - } - - public void startReplayActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, ReplayExampleActivity.class)); - } - public void startConcatActivity(View view) { startActivity(new Intent(OperatorsActivity.this, ConcatExampleActivity.class)); } @@ -121,63 +57,8 @@ public void startMergeActivity(View view) { startActivity(new Intent(OperatorsActivity.this, MergeExampleActivity.class)); } - public void startDeferActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, DeferExampleActivity.class)); - } - - public void startDistinctActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, DistinctExampleActivity.class)); - } - - public void startLastOperatorActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, LastOperatorExampleActivity.class)); - } - - public void startReplaySubjectActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, ReplaySubjectExampleActivity.class)); - } - - public void startPublishSubjectActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, PublishSubjectExampleActivity.class)); - } - - public void startBehaviorSubjectActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, BehaviorSubjectExampleActivity.class)); - } - - public void startAsyncSubjectActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, AsyncSubjectExampleActivity.class)); - } - - public void startThrottleFirstActivity(View view) { - startActivity(new Intent(OperatorsActivity.this,ThrottleFirstExampleActivity.class)); - } - - public void startThrottleLastActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, ThrottleLastExampleActivity.class)); - } - - public void startDebounceActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, DebounceExampleActivity.class)); - } - - public void startWindowActivity(View view) { - startActivity(new Intent(OperatorsActivity.this,WindowExampleActivity.class)); - } - public void startDelayActivity(View view) { - startActivity(new Intent(OperatorsActivity.this,DelayExampleActivity.class)); - } - - public void startSwitchMapActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, SwitchMapExampleActivity.class)); + startActivity(new Intent(OperatorsActivity.this, DelayExampleActivity.class)); } - public void startTakeWhileActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, TakeWhileExampleActivity.class)); - } - - public void startTakeUntilActivity(View view) { - startActivity(new Intent(OperatorsActivity.this, TakeUntilExampleActivity.class)); - } } diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java index fd392dd..57d27d4 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java @@ -4,17 +4,12 @@ import android.os.Bundle; import android.view.View; -import com.rxjava2.android.samples.MyApplication; +import androidx.appcompat.app.AppCompatActivity; + import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.ui.cache.CacheExampleActivity; -import com.rxjava2.android.samples.ui.compose.ComposeOperatorExampleActivity; import com.rxjava2.android.samples.ui.networking.NetworkingActivity; -import com.rxjava2.android.samples.ui.pagination.PaginationActivity; -import com.rxjava2.android.samples.ui.rxbus.RxBusActivity; import com.rxjava2.android.samples.ui.search.SearchActivity; -import androidx.appcompat.app.AppCompatActivity; - public class SelectionActivity extends AppCompatActivity { @Override @@ -31,23 +26,6 @@ public void startNetworkingActivity(View view) { startActivity(new Intent(SelectionActivity.this, NetworkingActivity.class)); } - public void startCacheActivity(View view) { - startActivity(new Intent(SelectionActivity.this, CacheExampleActivity.class)); - } - - public void startRxBusActivity(View view) { - ((MyApplication) getApplication()).sendAutoEvent(); - startActivity(new Intent(SelectionActivity.this, RxBusActivity.class)); - } - - public void startPaginationActivity(View view) { - startActivity(new Intent(SelectionActivity.this, PaginationActivity.class)); - } - - public void startComposeOperator(View view) { - startActivity(new Intent(SelectionActivity.this, ComposeOperatorExampleActivity.class)); - } - public void startSearchActivity(View view) { startActivity(new Intent(SelectionActivity.this, SearchActivity.class)); } diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/CacheExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/CacheExampleActivity.java deleted file mode 100644 index bd98f63..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/CacheExampleActivity.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.rxjava2.android.samples.ui.cache; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.ui.cache.model.Data; -import com.rxjava2.android.samples.ui.cache.source.DataSource; -import com.rxjava2.android.samples.ui.cache.source.DiskDataSource; -import com.rxjava2.android.samples.ui.cache.source.MemoryDataSource; -import com.rxjava2.android.samples.ui.cache.source.NetworkDataSource; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; - -public class CacheExampleActivity extends AppCompatActivity { - - private static final String TAG = CacheExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - DataSource dataSource; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = (Button) findViewById(R.id.btn); - textView = (TextView) findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - - dataSource = new DataSource(new MemoryDataSource(), new DiskDataSource(), new NetworkDataSource()); - } - - private void doSomeWork() { - - Observable memory = dataSource.getDataFromMemory(); - Observable disk = dataSource.getDataFromDisk(); - Observable network = dataSource.getDataFromNetwork(); - - Observable.concat(memory, disk, network) - .firstElement() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .toObservable() - .subscribe(getObserver()); - } - - private Observer getObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Data data) { - textView.append(" onNext : " + data.source); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext : " + data.source); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/model/Data.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/model/Data.java deleted file mode 100644 index 477144e..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/model/Data.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.rxjava2.android.samples.ui.cache.model; - -public class Data { - - public String source; - - @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException") - @Override - public Data clone() { - return new Data(); - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DataSource.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DataSource.java deleted file mode 100644 index 23403ff..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DataSource.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.rxjava2.android.samples.ui.cache.source; - -import com.rxjava2.android.samples.ui.cache.model.Data; - -import io.reactivex.Observable; - -/** - * The DataSource to handle 3 data sources - memory, disk, network - */ -public class DataSource { - - private final MemoryDataSource memoryDataSource; - private final DiskDataSource diskDataSource; - private final NetworkDataSource networkDataSource; - - public DataSource(MemoryDataSource memoryDataSource, - DiskDataSource diskDataSource, - NetworkDataSource networkDataSource) { - this.memoryDataSource = memoryDataSource; - this.diskDataSource = diskDataSource; - this.networkDataSource = networkDataSource; - } - - public Observable getDataFromMemory() { - return memoryDataSource.getData(); - } - - public Observable getDataFromDisk() { - return diskDataSource.getData().doOnNext(data -> - memoryDataSource.cacheInMemory(data) - ); - } - - public Observable getDataFromNetwork() { - return networkDataSource.getData().doOnNext(data -> { - diskDataSource.saveToDisk(data); - memoryDataSource.cacheInMemory(data); - }); - } - -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DiskDataSource.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DiskDataSource.java deleted file mode 100644 index 29f5bfa..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/DiskDataSource.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.rxjava2.android.samples.ui.cache.source; - -import com.rxjava2.android.samples.ui.cache.model.Data; - -import io.reactivex.Observable; - -/** - * Class to simulate Disk DataSource - */ -public class DiskDataSource { - - private Data data; - - public Observable getData() { - return Observable.create(emitter -> { - if (data != null) { - emitter.onNext(data); - } - emitter.onComplete(); - }); - } - - public void saveToDisk(Data data) { - this.data = data.clone(); - this.data.source = "disk"; - } - -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/MemoryDataSource.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/MemoryDataSource.java deleted file mode 100644 index 2742f26..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/MemoryDataSource.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.rxjava2.android.samples.ui.cache.source; - -import com.rxjava2.android.samples.ui.cache.model.Data; - -import io.reactivex.Observable; - -/** - * Class to simulate InMemory DataSource - */ -public class MemoryDataSource { - - private Data data; - - public Observable getData() { - return Observable.create(emitter -> { - if (data != null) { - emitter.onNext(data); - } - emitter.onComplete(); - }); - } - - public void cacheInMemory(Data data) { - this.data = data.clone(); - this.data.source = "memory"; - } - -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/NetworkDataSource.java b/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/NetworkDataSource.java deleted file mode 100644 index d903fb0..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/cache/source/NetworkDataSource.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.rxjava2.android.samples.ui.cache.source; - -import com.rxjava2.android.samples.ui.cache.model.Data; - -import io.reactivex.Observable; - - -/** - * Class to simulate Network DataSource - */ -public class NetworkDataSource { - - public Observable getData() { - return Observable.create(emitter -> { - Data data = new Data(); - data.source = "network"; - emitter.onNext(data); - emitter.onComplete(); - }); - } - -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/compose/ComposeOperatorExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/compose/ComposeOperatorExampleActivity.java deleted file mode 100644 index 89ab45b..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/compose/ComposeOperatorExampleActivity.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.rxjava2.android.samples.ui.compose; - -import android.os.Bundle; - -import com.rxjava2.android.samples.R; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Flowable; -import io.reactivex.Observable; - -public class ComposeOperatorExampleActivity extends AppCompatActivity { - - private RxSchedulers schedulers = new RxSchedulers(); - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_compose_operator_example); - - /* - Compose for reusable code. - */ - Observable.just(1, 2, 3, 4, 5) - .compose(schedulers.applyObservableAsync()) - .subscribe(/* */); - - Flowable.just(1, 2, 3, 4, 5) - .compose(schedulers.applyFlowableAsysnc()) - .subscribe(/* */); - - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/compose/RxSchedulers.java b/app/src/main/java/com/rxjava2/android/samples/ui/compose/RxSchedulers.java deleted file mode 100644 index 6be576c..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/compose/RxSchedulers.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.rxjava2.android.samples.ui.compose; - -import org.reactivestreams.Publisher; - -import io.reactivex.Flowable; -import io.reactivex.FlowableTransformer; -import io.reactivex.Observable; -import io.reactivex.ObservableSource; -import io.reactivex.ObservableTransformer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by werockstar on 5/19/2017. - */ - -public class RxSchedulers { - - public ObservableTransformer applyObservableAsync() { - return new ObservableTransformer() { - @Override - public ObservableSource apply(Observable observable) { - return observable.subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - }; - } - - public ObservableTransformer applyObservableCompute() { - return new ObservableTransformer() { - @Override - public ObservableSource apply(Observable observable) { - return observable.subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()); - } - }; - } - - public ObservableTransformer applyObservableMainThread() { - return new ObservableTransformer() { - @Override - public ObservableSource apply(Observable observable) { - return observable.observeOn(AndroidSchedulers.mainThread()); - } - }; - } - - public FlowableTransformer applyFlowableMainThread() { - return new FlowableTransformer() { - @Override - public Publisher apply(Flowable flowable) { - return flowable.observeOn(AndroidSchedulers.mainThread()); - } - }; - } - - public FlowableTransformer applyFlowableAsysnc() { - return new FlowableTransformer() { - @Override - public Publisher apply(Flowable flowable) { - return flowable.observeOn(AndroidSchedulers.mainThread()); - } - }; - } - - public FlowableTransformer applyFlowableCompute() { - return new FlowableTransformer() { - @Override - public Publisher apply(Flowable flowable) { - return flowable.observeOn(AndroidSchedulers.mainThread()); - } - }; - } - -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.java index a425a96..679bd42 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/networking/NetworkingActivity.java @@ -5,6 +5,8 @@ import android.util.Pair; import android.view.View; +import androidx.appcompat.app.AppCompatActivity; + import com.rx2androidnetworking.Rx2AndroidNetworking; import com.rxjava2.android.samples.R; import com.rxjava2.android.samples.model.ApiUser; @@ -15,7 +17,6 @@ import java.util.ArrayList; import java.util.List; -import androidx.appcompat.app.AppCompatActivity; import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.Observer; @@ -97,8 +98,8 @@ private Observable> getCricketFansObservable() { } /* - * This observable return the list of User who loves Football - */ + * This observable return the list of User who loves Football + */ private Observable> getFootballFansObservable() { return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllFootballFans") .build() @@ -106,10 +107,10 @@ private Observable> getFootballFansObservable() { } /* - * This do the complete magic, make both network call - * and then returns the list of user who loves both - * Using zip operator to get both response at a time - */ + * This do the complete magic, make both network call + * and then returns the list of user who loves both + * Using zip operator to get both response at a time + */ private void findUsersWhoLovesBoth() { // here we are using zip operator to combine both request Observable.zip(getCricketFansObservable(), getFootballFansObservable(), @@ -171,7 +172,6 @@ public void zip(View view) { /** * flatMap and filter Operators Example */ - private Observable> getAllMyFriendsObservable() { return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllFriends/{userId}") .addPathParameter("userId", "1") @@ -220,51 +220,9 @@ public void onComplete() { }); } - - /** - * take Operator Example - */ - - public void take(View view) { - getUserListObservable() - .flatMap(new Function, ObservableSource>() { // flatMap - to return users one by one - @Override - public ObservableSource apply(List usersList) { - return Observable.fromIterable(usersList); // returning user one by one from usersList. - } - }) - .take(4) // it will only emit first 4 users out of all - .subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(User user) { - // // only four user comes here one by one - Log.d(TAG, "user : " + user.toString()); - } - - @Override - public void onError(Throwable e) { - Utils.logError(TAG, e); - } - - @Override - public void onComplete() { - Log.d(TAG, "onComplete"); - } - }); - } - - /** * flatMap Operator Example */ - public void flatMap(View view) { getUserListObservable() .flatMap(new Function, ObservableSource>() { // flatMap - to return users one by one @@ -311,7 +269,6 @@ public void onComplete() { /** * flatMapWithZip Operator Example */ - private Observable> getUserListObservable() { return Rx2AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}") .addPathParameter("pageNumber", "0") diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/AsyncSubjectExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/AsyncSubjectExampleActivity.java deleted file mode 100644 index d2243a2..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/AsyncSubjectExampleActivity.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; -import io.reactivex.subjects.AsyncSubject; - -/** - * Created by amitshekhar on 17/12/16. - */ - -public class AsyncSubjectExampleActivity extends AppCompatActivity { - - private static final String TAG = AsyncSubjectExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* An AsyncSubject emits the last value (and only the last value) emitted by the source - * Observable, and only after that source Observable completes. (If the source Observable - * does not emit any values, the AsyncSubject also completes without emitting any values.) - */ - private void doSomeWork() { - - AsyncSubject source = AsyncSubject.create(); - - source.subscribe(getFirstObserver()); // it will emit only 4 and onComplete - - source.onNext(1); - source.onNext(2); - source.onNext(3); - - /* - * it will emit 4 and onComplete for second observer also. - */ - source.subscribe(getSecondObserver()); - - source.onNext(4); - source.onComplete(); - - } - - - private Observer getFirstObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " First onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" First onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" First onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" First onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onComplete"); - } - }; - } - - private Observer getSecondObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed()); - Log.d(TAG, " Second onSubscribe : " + d.isDisposed()); - textView.append(AppConstant.LINE_SEPARATOR); - } - - @Override - public void onNext(Integer value) { - textView.append(" Second onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" Second onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" Second onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/BehaviorSubjectExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/BehaviorSubjectExampleActivity.java deleted file mode 100644 index 9eeadd0..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/BehaviorSubjectExampleActivity.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; -import io.reactivex.subjects.BehaviorSubject; - -/** - * Created by amitshekhar on 17/12/16. - */ - -public class BehaviorSubjectExampleActivity extends AppCompatActivity { - - private static final String TAG = BehaviorSubjectExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* When an observer subscribes to a BehaviorSubject, it begins by emitting the item most - * recently emitted by the source Observable (or a seed/default value if none has yet been - * emitted) and then continues to emit any other items emitted later by the source Observable(s). - * It is different from Async Subject as async emits the last value (and only the last value) - * but the Behavior Subject emits the last and the subsequent values also. - */ - private void doSomeWork() { - - BehaviorSubject source = BehaviorSubject.create(); - - source.subscribe(getFirstObserver()); // it will get 1, 2, 3, 4 and onComplete - - source.onNext(1); - source.onNext(2); - source.onNext(3); - - /* - * it will emit 3(last emitted), 4 and onComplete for second observer also. - */ - source.subscribe(getSecondObserver()); - - source.onNext(4); - source.onComplete(); - - } - - - private Observer getFirstObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " First onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" First onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" First onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" First onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onComplete"); - } - }; - } - - private Observer getSecondObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed()); - Log.d(TAG, " Second onSubscribe : " + d.isDisposed()); - textView.append(AppConstant.LINE_SEPARATOR); - } - - @Override - public void onNext(Integer value) { - textView.append(" Second onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" Second onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" Second onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/BufferExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/BufferExampleActivity.java deleted file mode 100644 index 9171136..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/BufferExampleActivity.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import java.util.List; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - -/** - * Created by amitshekhar on 27/08/16. - */ -public class BufferExampleActivity extends AppCompatActivity { - - private static final String TAG = BufferExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * simple example using buffer operator - bundles all emitted values into a list - */ - private void doSomeWork() { - - Observable> buffered = getObservable().buffer(3, 1); - - // 3 means, it takes max of three from its start index and create list - // 1 means, it jumps one step every time - // so the it gives the following list - // 1 - one, two, three - // 2 - two, three, four - // 3 - three, four, five - // 4 - four, five - // 5 - five - - buffered.subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.just("one", "two", "three", "four", "five"); - } - - private Observer> getObserver() { - return new Observer>() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(List stringList) { - textView.append(" onNext size : " + stringList.size()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext : size :" + stringList.size()); - for (String value : stringList) { - textView.append(" value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " : value :" + value); - } - - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/CompletableObserverExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/CompletableObserverExampleActivity.java deleted file mode 100644 index 4ee612f..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/CompletableObserverExampleActivity.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import java.util.concurrent.TimeUnit; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Completable; -import io.reactivex.CompletableObserver; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by amitshekhar on 27/08/16. - */ -public class CompletableObserverExampleActivity extends AppCompatActivity { - - private static final String TAG = CompletableObserverExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * simple example using CompletableObserver - */ - private void doSomeWork() { - Completable completable = Completable.timer(1000, TimeUnit.MILLISECONDS); - - completable - .subscribeOn(Schedulers.io()) - // Be notified on the main thread - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getCompletableObserver()); - } - - private CompletableObserver getCompletableObserver() { - return new CompletableObserver() { - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - }; - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DebounceExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DebounceExampleActivity.java deleted file mode 100644 index 7837381..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DebounceExampleActivity.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import java.util.concurrent.TimeUnit; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by amitshekhar on 22/12/16. - */ - -public class DebounceExampleActivity extends AppCompatActivity { - - private static final String TAG = DebounceExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * Using debounce() -> only emit an item from an Observable if a particular time-span has - * passed without it emitting another item, so it will emit 2, 4, 5 as we have simulated it. - */ - private void doSomeWork() { - getObservable() - .debounce(500, TimeUnit.MILLISECONDS) - // Run on a background thread - .subscribeOn(Schedulers.io()) - // Be notified on the main thread - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter emitter) throws Exception { - // send events with simulated time wait - emitter.onNext(1); // skip - Thread.sleep(400); - emitter.onNext(2); // deliver - Thread.sleep(505); - emitter.onNext(3); // skip - Thread.sleep(100); - emitter.onNext(4); // deliver - Thread.sleep(605); - emitter.onNext(5); // deliver - Thread.sleep(510); - emitter.onComplete(); - } - }); - } - - private Observer getObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" onNext : "); - textView.append(AppConstant.LINE_SEPARATOR); - textView.append(" value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext "); - Log.d(TAG, " value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DeferExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DeferExampleActivity.java deleted file mode 100644 index 0e6249c..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DeferExampleActivity.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.model.Car; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - -/** - * Created by amitshekhar on 30/08/16. - */ -public class DeferExampleActivity extends AppCompatActivity { - - private static final String TAG = DeferExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * Defer used for Deferring Observable code until subscription in RxJava - */ - private void doSomeWork() { - - Car car = new Car(); - - Observable brandDeferObservable = car.brandDeferObservable(); - - car.setBrand("BMW"); // Even if we are setting the brand after creating Observable - // we will get the brand as BMW. - // If we had not used defer, we would have got null as the brand. - - brandDeferObservable - .subscribe(getObserver()); - } - - private Observer getObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(String value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext : value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DisposableExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DisposableExampleActivity.java index 9e51b3c..028bb4e 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DisposableExampleActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DisposableExampleActivity.java @@ -7,12 +7,13 @@ import android.widget.Button; import android.widget.TextView; +import androidx.appcompat.app.AppCompatActivity; + import com.rxjava2.android.samples.R; import com.rxjava2.android.samples.utils.AppConstant; import java.util.concurrent.Callable; -import androidx.appcompat.app.AppCompatActivity; import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -48,7 +49,7 @@ public void onClick(View view) { @Override protected void onDestroy() { super.onDestroy(); - disposables.clear(); // do not send event after activity has been destroyed + disposables.dispose(); // do not send event after activity has been destroyed } /* diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DistinctExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/DistinctExampleActivity.java deleted file mode 100644 index af2c0e3..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/DistinctExampleActivity.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - -/** - * Created by techteam on 13/09/16. - */ -public class DistinctExampleActivity extends AppCompatActivity { - - private static final String TAG = DistinctExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * distinct() suppresses duplicate items emitted by the source Observable. - */ - private void doSomeWork() { - - getObservable() - .distinct() - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.just(1, 2, 1, 1, 2, 3, 4, 6, 4); - } - - - private Observer getObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.d(TAG, " onComplete"); - } - }; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/FlowableExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/FlowableExampleActivity.java deleted file mode 100644 index 2bf727f..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/FlowableExampleActivity.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Flowable; -import io.reactivex.SingleObserver; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.BiFunction; - -/** - * Created by amitshekhar on 27/08/16. - */ -public class FlowableExampleActivity extends AppCompatActivity { - - private static final String TAG = FlowableExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * simple example using Flowable - */ - private void doSomeWork() { - - Flowable observable = Flowable.just(1, 2, 3, 4); - - observable.reduce(50, new BiFunction() { - @Override - public Integer apply(Integer t1, Integer t2) { - return t1 + t2; - } - }).subscribe(getObserver()); - - } - - private SingleObserver getObserver() { - - return new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onSuccess(Integer value) { - textView.append(" onSuccess : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onSuccess : value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - }; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java deleted file mode 100644 index 36baeaf..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import java.util.concurrent.TimeUnit; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.observers.DisposableObserver; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by amitshekhar on 27/08/16. - */ -public class IntervalExampleActivity extends AppCompatActivity { - - private static final String TAG = IntervalExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - private final CompositeDisposable disposables = new CompositeDisposable(); - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - disposables.clear(); // clearing it : do not emit after destroy - } - - /* - * simple example using interval to run task at an interval of 2 sec - * which start immediately - */ - private void doSomeWork() { - disposables.add(getObservable() - // Run on a background thread - .subscribeOn(Schedulers.io()) - // Be notified on the main thread - .observeOn(AndroidSchedulers.mainThread()) - .subscribeWith(getObserver())); - } - - private Observable getObservable() { - return Observable.interval(0, 2, TimeUnit.SECONDS); - } - - private DisposableObserver getObserver() { - return new DisposableObserver() { - - @Override - public void onNext(Long value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext : value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/LastOperatorExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/LastOperatorExampleActivity.java deleted file mode 100644 index 5cc3087..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/LastOperatorExampleActivity.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.SingleObserver; -import io.reactivex.disposables.Disposable; - -/** - * Created by techteam on 13/09/16. - */ -public class LastOperatorExampleActivity extends AppCompatActivity { - - private static final String TAG = DistinctExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * last() emits only the last item emitted by the Observable. - */ - private void doSomeWork() { - getObservable().last("A1") // the default item ("A1") to emit if the source ObservableSource is empty - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.just("A1", "A2", "A3", "A4", "A5", "A6"); - } - - private SingleObserver getObserver() { - return new SingleObserver() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onSuccess(String value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext value : " + value); - } - - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - }; - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/PublishSubjectExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/PublishSubjectExampleActivity.java deleted file mode 100644 index d03266b..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/PublishSubjectExampleActivity.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; -import io.reactivex.subjects.PublishSubject; - -/** - * Created by amitshekhar on 17/12/16. - */ - -public class PublishSubjectExampleActivity extends AppCompatActivity { - - private static final String TAG = PublishSubjectExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* PublishSubject emits to an observer only those items that are emitted - * by the source Observable, subsequent to the time of the subscription. - */ - private void doSomeWork() { - - PublishSubject source = PublishSubject.create(); - - source.subscribe(getFirstObserver()); // it will get 1, 2, 3, 4 and onComplete - - source.onNext(1); - source.onNext(2); - source.onNext(3); - - /* - * it will emit 4 and onComplete for second observer also. - */ - source.subscribe(getSecondObserver()); - - source.onNext(4); - source.onComplete(); - - } - - - private Observer getFirstObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " First onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" First onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" First onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" First onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onComplete"); - } - }; - } - - private Observer getSecondObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed()); - Log.d(TAG, " Second onSubscribe : " + d.isDisposed()); - textView.append(AppConstant.LINE_SEPARATOR); - } - - @Override - public void onNext(Integer value) { - textView.append(" Second onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" Second onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" Second onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReduceExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReduceExampleActivity.java deleted file mode 100644 index aa8aec1..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReduceExampleActivity.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.MaybeObserver; -import io.reactivex.Observable; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.BiFunction; - -/** - * Created by amitshekhar on 27/08/16. - */ -public class ReduceExampleActivity extends AppCompatActivity { - - private static final String TAG = ReduceExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * simple example using reduce to add all the number - */ - private void doSomeWork() { - getObservable() - .reduce(new BiFunction() { - @Override - public Integer apply(Integer t1, Integer t2) { - return t1 + t2; - } - }) - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.just(1, 2, 3, 4); - } - - private MaybeObserver getObserver() { - return new MaybeObserver() { - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onSuccess(Integer value) { - textView.append(" onSuccess : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onSuccess : value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplayExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplayExampleActivity.java deleted file mode 100644 index c1ce888..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplayExampleActivity.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; -import io.reactivex.observables.ConnectableObservable; -import io.reactivex.subjects.PublishSubject; - -/** - * Created by amitshekhar on 27/08/16. - */ -public class ReplayExampleActivity extends AppCompatActivity { - - private static final String TAG = ReplayExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* Using replay operator, replay ensure that all observers see the same sequence - * of emitted items, even if they subscribe after the Observable has begun emitting items - */ - private void doSomeWork() { - - PublishSubject source = PublishSubject.create(); - ConnectableObservable connectableObservable = source.replay(3); // bufferSize = 3 to retain 3 values to replay - connectableObservable.connect(); // connecting the connectableObservable - - connectableObservable.subscribe(getFirstObserver()); - - source.onNext(1); - source.onNext(2); - source.onNext(3); - source.onNext(4); - source.onComplete(); - - /* - * it will emit 2, 3, 4 as (count = 3), retains the 3 values for replay - */ - connectableObservable.subscribe(getSecondObserver()); - - } - - - private Observer getFirstObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " First onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" First onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" First onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" First onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onComplete"); - } - }; - } - - private Observer getSecondObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed()); - Log.d(TAG, " Second onSubscribe : " + d.isDisposed()); - textView.append(AppConstant.LINE_SEPARATOR); - } - - @Override - public void onNext(Integer value) { - textView.append(" Second onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" Second onError : " + e.getMessage()); - Log.d(TAG, " Second onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" Second onComplete"); - Log.d(TAG, " Second onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplaySubjectExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplaySubjectExampleActivity.java deleted file mode 100644 index 34bb5e4..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ReplaySubjectExampleActivity.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; -import io.reactivex.subjects.ReplaySubject; - -/** - * Created by amitshekhar on 17/12/16. - */ - -public class ReplaySubjectExampleActivity extends AppCompatActivity { - - private static final String TAG = ReplaySubjectExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* ReplaySubject emits to any observer all of the items that were emitted - * by the source Observable, regardless of when the observer subscribes. - */ - private void doSomeWork() { - - ReplaySubject source = ReplaySubject.create(); - - source.subscribe(getFirstObserver()); // it will get 1, 2, 3, 4 - - source.onNext(1); - source.onNext(2); - source.onNext(3); - source.onNext(4); - source.onComplete(); - - /* - * it will emit 1, 2, 3, 4 for second observer also as we have used replay - */ - source.subscribe(getSecondObserver()); - - } - - - private Observer getFirstObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " First onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" First onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" First onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" First onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " First onComplete"); - } - }; - } - - private Observer getSecondObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - textView.append(" Second onSubscribe : isDisposed :" + d.isDisposed()); - Log.d(TAG, " Second onSubscribe : " + d.isDisposed()); - textView.append(AppConstant.LINE_SEPARATOR); - } - - @Override - public void onNext(Integer value) { - textView.append(" Second onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" Second onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" Second onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " Second onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ScanExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ScanExampleActivity.java deleted file mode 100644 index 0c263c2..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ScanExampleActivity.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.BiFunction; -import io.reactivex.schedulers.Schedulers; - -public class ScanExampleActivity extends AppCompatActivity { - - private static final String TAG = ScanExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* Using scan operator, it sends also the previous result */ - private void doSomeWork() { - getObservable() - // Run on a background thread - .subscribeOn(Schedulers.io()) - // Be notified on the main thread - .observeOn(AndroidSchedulers.mainThread()) - .scan(new BiFunction() { - @Override - public Integer apply(Integer int1, Integer int2) { - return int1 + int2; - } - }) - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.just(1, 2, 3, 4, 5); - } - - private Observer getObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.java index 6329b1b..0023300 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SimpleExampleActivity.java @@ -6,10 +6,11 @@ import android.widget.Button; import android.widget.TextView; +import androidx.appcompat.app.AppCompatActivity; + import com.rxjava2.android.samples.R; import com.rxjava2.android.samples.utils.AppConstant; -import androidx.appcompat.app.AppCompatActivity; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SingleObserverExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SingleObserverExampleActivity.java deleted file mode 100644 index 403f070..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SingleObserverExampleActivity.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Single; -import io.reactivex.SingleObserver; -import io.reactivex.disposables.Disposable; - -/** - * Created by amitshekhar on 27/08/16. - */ -public class SingleObserverExampleActivity extends AppCompatActivity { - - private static final String TAG = SingleObserverExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * simple example using SingleObserver - */ - private void doSomeWork() { - Single.just("Amit") - .subscribe(getSingleObserver()); - } - - private SingleObserver getSingleObserver() { - return new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onSuccess(String value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - }; - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SkipExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SkipExampleActivity.java deleted file mode 100644 index 06ad8eb..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SkipExampleActivity.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by amitshekhar on 27/08/16. - */ -public class SkipExampleActivity extends AppCompatActivity { - - private static final String TAG = SkipExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* Using skip operator, it will not emit - * the first 2 values. - */ - private void doSomeWork() { - getObservable() - // Run on a background thread - .subscribeOn(Schedulers.io()) - // Be notified on the main thread - .observeOn(AndroidSchedulers.mainThread()) - .skip(2) - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.just(1, 2, 3, 4, 5); - } - - private Observer getObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SwitchMapExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/SwitchMapExampleActivity.java deleted file mode 100644 index d787bc5..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/SwitchMapExampleActivity.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import java.util.Random; -import java.util.concurrent.TimeUnit; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.ObservableSource; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Function; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by thanhtuan on 26/04/18. - */ -public class SwitchMapExampleActivity extends AppCompatActivity { - - private static final String TAG = SwitchMapExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* whenever a new item is emitted by the source Observable, it will unsubscribe to and stop - * mirroring the Observable that was generated from the previously-emitted item, - * and begin only mirroring the current one. - * - * Result: 5x - */ - private void doSomeWork() { - getObservable() - .switchMap(new Function>() { - @Override - public ObservableSource apply(Integer integer) { - int delay = new Random().nextInt(2); - - return Observable.just(integer.toString() + "x") - .delay(delay, TimeUnit.SECONDS, Schedulers.io()); - } - }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.just(1, 2, 3, 4, 5); - } - - private Observer getObserver() { - return new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(String value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeExampleActivity.java deleted file mode 100644 index 74b4b9f..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeExampleActivity.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by amitshekhar on 27/08/16. - */ -public class TakeExampleActivity extends AppCompatActivity { - - private static final String TAG = TakeExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* Using take operator, it only emits - * required number of values. here only 3 out of 5 - */ - private void doSomeWork() { - getObservable() - // Run on a background thread - .subscribeOn(Schedulers.io()) - // Be notified on the main thread - .observeOn(AndroidSchedulers.mainThread()) - .take(3) - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.just(1, 2, 3, 4, 5); - } - - private Observer getObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeOperatorBaseActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeOperatorBaseActivity.java deleted file mode 100644 index a078b5b..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeOperatorBaseActivity.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; -import com.rxjava2.android.samples.utils.ObserverAdapter; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - -public abstract class TakeOperatorBaseActivity extends AppCompatActivity { - private static final String TAG = TakeWhileExampleActivity.class.getSimpleName(); - - private Button btn; - - protected TextView textView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(view -> { - doSomeWork(); - }); - } - - /** - * Need to be override based on the operation. - */ - abstract void doSomeWork(); - - protected Observer getObserver() { - return new ObserverAdapter() { - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(String value) { - textView.append(" onNext : value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext value : " + value); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - - - protected Observable getStringObservable() { - return Observable.just("Alpha", "Beta", "Cupcake", "Doughnut", "Eclair", "Froyo", "GingerBread", - "Honeycomb", "Ice cream sandwich"); - } - -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeUntilExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeUntilExampleActivity.java deleted file mode 100644 index e0313d0..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeUntilExampleActivity.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.util.Log; - -import com.rxjava2.android.samples.utils.AppConstant; -import com.rxjava2.android.samples.utils.ObserverAdapter; - -import java.util.concurrent.TimeUnit; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.functions.BiFunction; - -public class TakeUntilExampleActivity extends TakeOperatorBaseActivity { - - private static final String TAG = TakeWhileExampleActivity.class.getSimpleName(); - - @Override - protected void doSomeWork() { - Observable timerObservable = Observable.timer(5, TimeUnit.SECONDS); - timerObservable.subscribe(new ObserverAdapter() { - @Override - public void onComplete() { - String print = " Timer completed"; - textView.append(print); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, print); - } - }); - - getStringObservable() - //Delay item emission by one second - .zipWith(Observable.interval(0, 1, TimeUnit.SECONDS), new BiFunction() { - @Override - public String apply(String s, Long aLong) throws Exception { - return s; - } - }) - //Will receive the items from Strings observable until timerObservable doesn't start emitting data. - .takeUntil(timerObservable) - //We need to observe on MainThread because delay works on background thread to avoid UI blocking. - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getObserver()); - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeWhileExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeWhileExampleActivity.java deleted file mode 100644 index 213b779..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/TakeWhileExampleActivity.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import java.util.concurrent.TimeUnit; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.functions.BiFunction; -import io.reactivex.functions.Predicate; - -public class TakeWhileExampleActivity extends TakeOperatorBaseActivity { - - private static final String TAG = TakeWhileExampleActivity.class.getSimpleName(); - - @Override - protected void doSomeWork() { - getStringObservable() - //Delay item emission by one second - .zipWith(Observable.interval(0, 1, TimeUnit.SECONDS), new BiFunction() { - @Override - public String apply(String s, Long aLong) throws Exception { - return s; - } - }) - //Take the items until the condition is met. - .takeWhile(new Predicate() { - @Override - public boolean test(String s) throws Exception { - return !s.toLowerCase().contains("honey"); - } - }) - //We need to observe on MainThread because delay works on background thread to avoid UI blocking. - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getObserver()); - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleFirstExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleFirstExampleActivity.java deleted file mode 100644 index a009cc1..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleFirstExampleActivity.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import java.util.concurrent.TimeUnit; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; - - -/** - * Created by threshold on 2017/1/11. - */ - -public class ThrottleFirstExampleActivity extends AppCompatActivity { - - private static final String TAG = ThrottleFirstExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * Using throttleFirst() -> if the source Observable has emitted no items since - * the last time it was sampled, the Observable that results from this operator - * will emit no item for that sampling period. - */ - private void doSomeWork() { - getObservable() - .throttleFirst(500, TimeUnit.MILLISECONDS) - // Run on a background thread - .subscribeOn(Schedulers.io()) - // Be notified on the main thread - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter emitter) throws Exception { - // send events with simulated time wait - Thread.sleep(0); - emitter.onNext(1); // deliver - emitter.onNext(2); // skip - Thread.sleep(505); - emitter.onNext(3); // deliver - Thread.sleep(99); - emitter.onNext(4); // skip - Thread.sleep(100); - emitter.onNext(5); // skip - emitter.onNext(6); // skip - Thread.sleep(305); - emitter.onNext(7); // deliver - Thread.sleep(510); - emitter.onComplete(); - } - }); - } - - private Observer getObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" onNext : "); - textView.append(AppConstant.LINE_SEPARATOR); - textView.append(" value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext "); - Log.d(TAG, " value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleLastExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleLastExampleActivity.java deleted file mode 100644 index b48e208..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ThrottleLastExampleActivity.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import java.util.concurrent.TimeUnit; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by amitshekhar on 22/12/16. - */ - -public class ThrottleLastExampleActivity extends AppCompatActivity { - - private static final String TAG = ThrottleLastExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * Using throttleLast() -> emit the most recent items emitted by an Observable within - * periodic time intervals, so here it will emit 2, 6 and 7 as we have simulated it to be the - * last the element in the interval of 500 millis - */ - private void doSomeWork() { - getObservable() - .throttleLast(500, TimeUnit.MILLISECONDS) - // Run on a background thread - .subscribeOn(Schedulers.io()) - // Be notified on the main thread - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getObserver()); - } - - private Observable getObservable() { - return Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter emitter) throws Exception { - // send events with simulated time wait - Thread.sleep(0); - emitter.onNext(1); // skip - emitter.onNext(2); // deliver - Thread.sleep(505); - emitter.onNext(3); // skip - Thread.sleep(99); - emitter.onNext(4); // skip - Thread.sleep(100); - emitter.onNext(5); // skip - emitter.onNext(6); // deliver - Thread.sleep(305); - emitter.onNext(7); // deliver - Thread.sleep(510); - emitter.onComplete(); - } - }); - } - - private Observer getObserver() { - return new Observer() { - - @Override - public void onSubscribe(Disposable d) { - Log.d(TAG, " onSubscribe : " + d.isDisposed()); - } - - @Override - public void onNext(Integer value) { - textView.append(" onNext : "); - textView.append(AppConstant.LINE_SEPARATOR); - textView.append(" value : " + value); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onNext "); - Log.d(TAG, " value : " + value); - } - - @Override - public void onError(Throwable e) { - textView.append(" onError : " + e.getMessage()); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onError : " + e.getMessage()); - } - - @Override - public void onComplete() { - textView.append(" onComplete"); - textView.append(AppConstant.LINE_SEPARATOR); - Log.d(TAG, " onComplete"); - } - }; - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/WindowExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/WindowExampleActivity.java deleted file mode 100644 index 881db12..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/WindowExampleActivity.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.rxjava2.android.samples.ui.operators; - -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.utils.AppConstant; - -import java.util.concurrent.TimeUnit; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.functions.Consumer; -import io.reactivex.schedulers.Schedulers; - -public class WindowExampleActivity extends AppCompatActivity { - - private static final String TAG = WindowExampleActivity.class.getSimpleName(); - Button btn; - TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_example); - btn = findViewById(R.id.btn); - textView = findViewById(R.id.textView); - - btn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - doSomeWork(); - } - }); - } - - /* - * Example using window operator -> It periodically - * subdivide items from an Observable into - * Observable windows and emit these windows rather than - * emitting the items one at a time - */ - protected void doSomeWork() { - - Observable.interval(1, TimeUnit.SECONDS).take(12) - .window(3, TimeUnit.SECONDS) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getConsumer()); - } - - public Consumer> getConsumer() { - return new Consumer>() { - @Override - public void accept(Observable observable) { - Log.d(TAG, "Sub Divide begin...."); - textView.append("Sub Divide begin ...."); - textView.append(AppConstant.LINE_SEPARATOR); - observable - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Consumer() { - @Override - public void accept(Long value) { - Log.d(TAG, "Next:" + value); - textView.append("Next:" + value); - textView.append(AppConstant.LINE_SEPARATOR); - } - }); - } - }; - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ZipExampleActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ZipExampleActivity.java index 11cb394..73b85e8 100644 --- a/app/src/main/java/com/rxjava2/android/samples/ui/operators/ZipExampleActivity.java +++ b/app/src/main/java/com/rxjava2/android/samples/ui/operators/ZipExampleActivity.java @@ -6,6 +6,8 @@ import android.widget.Button; import android.widget.TextView; +import androidx.appcompat.app.AppCompatActivity; + import com.rxjava2.android.samples.R; import com.rxjava2.android.samples.model.User; import com.rxjava2.android.samples.utils.AppConstant; @@ -13,7 +15,6 @@ import java.util.List; -import androidx.appcompat.app.AppCompatActivity; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java deleted file mode 100644 index 202be46..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationActivity.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.rxjava2.android.samples.ui.pagination; - -import android.os.Bundle; -import android.view.View; -import android.widget.ProgressBar; - -import com.rxjava2.android.samples.R; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import io.reactivex.Single; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; -import io.reactivex.processors.PublishProcessor; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by amitshekhar on 15/03/17. - */ - -public class PaginationActivity extends AppCompatActivity { - - public static final String TAG = PaginationActivity.class.getSimpleName(); - private CompositeDisposable compositeDisposable = new CompositeDisposable(); - private PublishProcessor paginator = PublishProcessor.create(); - private PaginationAdapter paginationAdapter; - private RecyclerView recyclerView; - private ProgressBar progressBar; - private boolean loading = false; - private int pageNumber = 1; - private final int VISIBLE_THRESHOLD = 1; - private int lastVisibleItem, totalItemCount; - private LinearLayoutManager layoutManager; - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_pagination); - recyclerView = findViewById(R.id.recyclerView); - progressBar = findViewById(R.id.progressBar); - layoutManager = new LinearLayoutManager(this); - layoutManager.setOrientation(RecyclerView.VERTICAL); - recyclerView.setLayoutManager(layoutManager); - paginationAdapter = new PaginationAdapter(); - recyclerView.setAdapter(paginationAdapter); - setUpLoadMoreListener(); - subscribeForData(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - compositeDisposable.clear(); - } - - /** - * setting listener to get callback for load more - */ - private void setUpLoadMoreListener() { - recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrolled(RecyclerView recyclerView, - int dx, int dy) { - super.onScrolled(recyclerView, dx, dy); - - totalItemCount = layoutManager.getItemCount(); - lastVisibleItem = layoutManager - .findLastVisibleItemPosition(); - if (!loading - && totalItemCount <= (lastVisibleItem + VISIBLE_THRESHOLD)) { - pageNumber++; - paginator.onNext(pageNumber); - loading = true; - } - } - }); - } - - /** - * subscribing for data - */ - private void subscribeForData() { - - Disposable disposable = paginator - .onBackpressureDrop() - .doOnNext(page -> { - loading = true; - progressBar.setVisibility(View.VISIBLE); - }) - .concatMapSingle(page -> dataFromNetwork(page) - .subscribeOn(Schedulers.io()) - .doOnError(throwable -> { - // handle error - })) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(items -> { - paginationAdapter.addItems(items); - paginationAdapter.notifyDataSetChanged(); - loading = false; - progressBar.setVisibility(View.INVISIBLE); - }); - - compositeDisposable.add(disposable); - - paginator.onNext(pageNumber); - - } - - /** - * Simulation of network data - */ - private Single> dataFromNetwork(final int page) { - return Single.just(true) - .delay(2, TimeUnit.SECONDS) - .map(value -> { - List items = new ArrayList<>(); - for (int i = 1; i <= 10; i++) { - items.add("Item " + (page * 10 + i)); - } - return items; - }); - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationAdapter.java b/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationAdapter.java deleted file mode 100644 index ddc0402..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/pagination/PaginationAdapter.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.rxjava2.android.samples.ui.pagination; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.rxjava2.android.samples.R; - -import java.util.ArrayList; -import java.util.List; - -import androidx.recyclerview.widget.RecyclerView; - -/** - * Created by amitshekhar on 15/03/17. - */ - -public class PaginationAdapter extends RecyclerView.Adapter { - - List items = new ArrayList<>(); - - public PaginationAdapter() { - - } - - void addItems(List items) { - this.items.addAll(items); - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return ItemViewHolder.create(parent); - } - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { - ((ItemViewHolder) holder).bind(items.get(position)); - } - - @Override - public int getItemCount() { - return items.size(); - } - - private static class ItemViewHolder extends RecyclerView.ViewHolder { - ItemViewHolder(View itemView) { - super(itemView); - } - - static ItemViewHolder create(ViewGroup parent) { - return new ItemViewHolder( - LayoutInflater.from(parent.getContext()).inflate(R.layout.item_pagination, parent, false)); - } - - void bind(String content) { - ((TextView) itemView).setText(content); - } - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBus.java b/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBus.java deleted file mode 100644 index cdc81b0..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBus.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.rxjava2.android.samples.ui.rxbus; - -import io.reactivex.Observable; -import io.reactivex.subjects.PublishSubject; - -/** - * Created by amitshekhar on 06/02/17. - */ - -public class RxBus { - - public RxBus() { - } - - private PublishSubject bus = PublishSubject.create(); - - public void send(Object o) { - bus.onNext(o); - } - - public Observable toObservable() { - return bus; - } - - public boolean hasObservers() { - return bus.hasObservers(); - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java b/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java deleted file mode 100644 index a991e5e..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBusActivity.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.rxjava2.android.samples.ui.rxbus; - -import android.os.Bundle; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; - -import com.rxjava2.android.samples.MyApplication; -import com.rxjava2.android.samples.R; -import com.rxjava2.android.samples.model.Events; - -import androidx.appcompat.app.AppCompatActivity; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.functions.Consumer; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by amitshekhar on 06/02/17. - */ - -public class RxBusActivity extends AppCompatActivity { - - public static final String TAG = RxBusActivity.class.getSimpleName(); - TextView textView; - Button button; - private final CompositeDisposable disposables = new CompositeDisposable(); - - @Override - protected void onDestroy() { - super.onDestroy(); - disposables.clear(); // do not send event after activity has been destroyed - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_rxbus); - textView = findViewById(R.id.textView); - button = findViewById(R.id.button); - - disposables.add(((MyApplication) getApplication()) - .bus() - .toObservable() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Consumer() { - @Override - public void accept(Object object) { - if (object instanceof Events.AutoEvent) { - textView.setText("Auto Event Received"); - } else if (object instanceof Events.TapEvent) { - textView.setText("Tap Event Received"); - } - } - })); - - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ((MyApplication) getApplication()) - .bus() - .send(new Events.TapEvent()); - } - }); - } - - - -} diff --git a/app/src/main/java/com/rxjava2/android/samples/utils/ObserverAdapter.java b/app/src/main/java/com/rxjava2/android/samples/utils/ObserverAdapter.java deleted file mode 100644 index 546084a..0000000 --- a/app/src/main/java/com/rxjava2/android/samples/utils/ObserverAdapter.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.rxjava2.android.samples.utils; - -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - -/** - * Adapter class for Observer to get the method only needed by the user. Instead of overriding each and every method. - * - * @param - */ -public abstract class ObserverAdapter implements Observer { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(T s) { - - } - - @Override - public void onError(Throwable e) { - - } - - @Override - public void onComplete() { - - } -} diff --git a/app/src/main/java/com/rxjava2/android/samples/utils/Utils.java b/app/src/main/java/com/rxjava2/android/samples/utils/Utils.java index c0d7076..e2a01be 100644 --- a/app/src/main/java/com/rxjava2/android/samples/utils/Utils.java +++ b/app/src/main/java/com/rxjava2/android/samples/utils/Utils.java @@ -77,7 +77,7 @@ public static List convertApiUserListToUserList(List apiUserList) } public static List convertApiUserListToApiUserList(List apiUserList) { - return apiUserList; + return apiUserList; } diff --git a/app/src/main/res/layout/activity_compose_operator_example.xml b/app/src/main/res/layout/activity_compose_operator_example.xml deleted file mode 100644 index 0f6e27c..0000000 --- a/app/src/main/res/layout/activity_compose_operator_example.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/app/src/main/res/layout/activity_networking.xml b/app/src/main/res/layout/activity_networking.xml index 12893a1..ac11dec 100644 --- a/app/src/main/res/layout/activity_networking.xml +++ b/app/src/main/res/layout/activity_networking.xml @@ -9,10 +9,10 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" + android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin"> + android:paddingBottom="@dimen/activity_vertical_margin">