From 450bfba3edc8f2b60b10488ff8df25b4ada77483 Mon Sep 17 00:00:00 2001 From: Mitch Tabian Date: Mon, 25 Mar 2019 14:21:47 -0700 Subject: [PATCH] start --- .../rxjavaflatmapexample/MainActivity.java | 113 +----------------- .../requests/RequestApi.java | 8 -- 2 files changed, 3 insertions(+), 118 deletions(-) diff --git a/app/src/main/java/com/codingwithmitch/rxjavaflatmapexample/MainActivity.java b/app/src/main/java/com/codingwithmitch/rxjavaflatmapexample/MainActivity.java index 1c3814b..093f396 100644 --- a/app/src/main/java/com/codingwithmitch/rxjavaflatmapexample/MainActivity.java +++ b/app/src/main/java/com/codingwithmitch/rxjavaflatmapexample/MainActivity.java @@ -3,25 +3,12 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import io.reactivex.Observable; -import io.reactivex.ObservableSource; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; + import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Function; -import io.reactivex.functions.Predicate; -import io.reactivex.schedulers.Schedulers; -import android.os.Bundle; -import android.util.Log; -import com.codingwithmitch.rxjavaflatmapexample.models.Comment; -import com.codingwithmitch.rxjavaflatmapexample.models.Post; -import com.codingwithmitch.rxjavaflatmapexample.requests.ServiceGenerator; +import android.os.Bundle; -import java.util.List; -import java.util.Random; public class MainActivity extends AppCompatActivity { @@ -43,110 +30,16 @@ protected void onCreate(Bundle savedInstanceState) { initRecyclerView(); - getPostsObservable() - .subscribeOn(Schedulers.io()) - .flatMap(new Function>() { - @Override - public ObservableSource apply(Post post) throws Exception { - return getCommentsObservable(post); - } - }) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - disposables.add(d); - } - - @Override - public void onNext(Post post) { - updatePost(post); - } - - @Override - public void onError(Throwable e) { - Log.e(TAG, "onError: ", e); - } - - @Override - public void onComplete() { - } - }); - } - - private Observable getPostsObservable(){ - return ServiceGenerator.getRequestApi() - .getPosts() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .flatMap(new Function, ObservableSource>() { - @Override - public ObservableSource apply(final List posts) throws Exception { - adapter.setPosts(posts); - return Observable.fromIterable(posts) - .subscribeOn(Schedulers.io()); - } - }); - } - private void updatePost(final Post p){ - Observable - .fromIterable(adapter.getPosts()) - .filter(new Predicate() { - @Override - public boolean test(Post post) throws Exception { - return post.getId() == p.getId(); - } - }) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - disposables.add(d); - } - - @Override - public void onNext(Post post) { - Log.d(TAG, "onNext: updating post: " + post.getId() + ", thread: " + Thread.currentThread().getName()); - adapter.updatePost(post); - } - - @Override - public void onError(Throwable e) { - Log.e(TAG, "onError: ", e); - } - - @Override - public void onComplete() { - } - }); } - private Observable getCommentsObservable(final Post post){ - return ServiceGenerator.getRequestApi() - .getComments(post.getId()) - .map(new Function, Post>() { - @Override - public Post apply(List comments) throws Exception { - - int delay = ((new Random()).nextInt(5) + 1) * 1000; // sleep thread for x ms - Thread.sleep(delay); - Log.d(TAG, "apply: sleeping thread " + Thread.currentThread().getName() + " for " + String.valueOf(delay)+ "ms"); - - post.setComments(comments); - return post; - } - }) - .subscribeOn(Schedulers.io()); - - } private void initRecyclerView(){ adapter = new RecyclerAdapter(); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(adapter); } - + @Override protected void onDestroy() { super.onDestroy(); diff --git a/app/src/main/java/com/codingwithmitch/rxjavaflatmapexample/requests/RequestApi.java b/app/src/main/java/com/codingwithmitch/rxjavaflatmapexample/requests/RequestApi.java index 8f50705..49aaffb 100644 --- a/app/src/main/java/com/codingwithmitch/rxjavaflatmapexample/requests/RequestApi.java +++ b/app/src/main/java/com/codingwithmitch/rxjavaflatmapexample/requests/RequestApi.java @@ -5,20 +5,12 @@ import java.util.List; -import io.reactivex.Flowable; import io.reactivex.Observable; -import okhttp3.ResponseBody; import retrofit2.http.GET; import retrofit2.http.Path; public interface RequestApi { - @GET("todos/1") - Flowable makeQuery(); - - @GET("todos/1") - Observable makeObservableQuery(); - @GET("posts") Observable> getPosts();