[英]Create list with objects from another list using RxJava
我有一個方法: Observable<List<String>> getNames();
我有構造函數Person()
和Person(String name)
對象Person
還有一個空列表ArrayList<Person> cachedPersons
。
我需要什么:在我的方法中,使用RxJava fill array和Person
使用List<String>
構造函數<String>
,如下所示:
ArrayList<String> cachedPersons = new ArrayList<Person>();
Observable<List<String>> getNames(){
Observable.from(getNames())
.map{
//cachedPersons.addAll(/*add new Person with corresponding String*/)
//with List("John","Sara","David")
//create cachedPersons = List(Person1("John"),Person2("Sara"),Person3("David"))
}
}
Observable.from(getNames())
.map{ name -> new Person(name)}
.toList()
.subscribe(
list -> cachedPersons.addAll(list)
);
問題是您正在嘗試從map()方法填充所需的ArrayList ,這是錯誤的。
除非您進行訂閱 ,否則它將永遠不會執行。 您沒有在代碼中執行此操作,因此ArrayList將不會被上述代碼填充。
不要認購和申購中,你onNext可以填寫你的ArrayList。
也許這個
Observable.from(getNames())
.doOnNext(name -> cachedPersons.add(new Person(name)))
.toList()
.subscribe();
這樣,您就可以填充它而不更改流值。
Observable<SourceObjet> source = ...// get first list from here
source.flatMapIterable(list -> list)
.map(item -> new ResultsObject().convertFromSource(item))
.toList()
.subscribe(transformedList -> ...);
如果Observable發出List,則可以使用以下運算符:
flatMapIterable
>將列表轉換為項目的Observable map
->將您的商品轉換為其他商品 toList
>將完成的Observable轉換為Observable,從完成的Observable發出項目列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.