簡體   English   中英

使用RxJava使用其他列表中的對象創建列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM