Android RxJava加入列表

Android RxJava加入列表,第1张

概述试图了解所有Rx Java的东西.我正在做以下示例: private Observable<List<String>> query1() { List<String> urls = new ArrayList<>(); urls.add("1"); urls.add("2"); urls.add("3"); urls.add("4"); retur 试图了解所有Rx Java的东西.我正在做以下示例:
private Observable<List<String>> query1() {    List<String> urls = new ArrayList<>();    urls.add("1");    urls.add("2");    urls.add("3");    urls.add("4");    return Observable.just(urls);}private Observable<List<String>> query2() {    List<String> urls = new ArrayList<>();    urls.add("A");    urls.add("B");    urls.add("C");    urls.add("D");    return Observable.just(urls);}

然后尝试加入两个列表

Observable.zip(            query1(),query2(),new Func2<List<String>,List<String>,Observable<String>>() {                @OverrIDe                public Observable<String> call(List<String> a1,List<String> a2) {                    List<String> List = new ArrayList<>();                    List.addAll(a1);                    List.addAll(a2);                    return Observable.from(List);                }            })            .subscribe(new Action1<String>() {  // <-- It says,cannot resolve method subscribe                @OverrIDe                public voID call(String string) {                    String text = testTextVIEw.getText().toString();                    testTextVIEw.setText(text + "\n" + string);                }            });

我做错了什么?我期待着进入我的视野
1
2
3
4
一个

C
d

EDIT1我以下面的答案结束了:

Observable.zip(            query1(),List<String>>() {                @OverrIDe                public List<String> call(List<String> a1,List<String> a2) {                    List<String> List = new ArrayList<>();                    List.addAll(a1);                    List.addAll(a2);                    return List;                }            })            .flatMap(new Func1<List<String>,Observable<String>>() {                @OverrIDe                public Observable<String> call(List<String> urls) {                    return Observable.from(urls);                }            })            .subscribe(new Action1<String>() {                @OverrIDe                public voID call(String string) {                    String text = testTextVIEw.getText().toString();                    testTextVIEw.setText(text + "\n" + string);                }            });

在这种情况下,ihuk建议的EDIT2 concat解决方案要好得多.感谢所有的答案.

解决方法 我相信你正在寻找的 *** 作符是concat或merge.

Concat将从两个或多个Observable发射排放,而不会交错.

另一方面,合并将通过合并它们的排放来组合多个可观察量.

例如:

String[] numbers = {"1","2","3","4"};    String[] letters = {"a","b","c","d"};    Observable<String> query1 = Observable.from(numbers).delay(1,TimeUnit.SECONDS);    Observable<String> query2 = Observable.from(letters);    Observable            .concat(query1,query2)            .subscribe(s -> {                System.out.printf("-%s-" + s);            });

将打印-1–2–3–4 – a – b – c – d-.如果用conc替换concat,结果将是-a-b-c-d-1–2–3–4-.

Zip运算符将通过指定的函数将多个Observable组合在一起.例如

Observable            .zip(query1,query2,(String n,String l) -> String.format("(%s,%s)",n,l))            .subscribe(s -> {                System.out.printf("-%s-",s);            });

将输出 – (1,a) – (2,b) – (3,c) – (4,d) – .

总结

以上是内存溢出为你收集整理的Android RxJava加入列表全部内容,希望文章能够帮你解决Android RxJava加入列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1138121.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存