我有一个列表myPersonList,我想填写每个项目的名称和城市。我的身份已经被填满了。我可以创建一个foreach并调用FillPersonData但是我如何使用Observables呢?我知道Map()和FlatMap()有一些东西......但是我没有得到它
class Person{
int id;
String name;
String city;
}
List<Person> myPersonList;
我需要做些什么来获得一个可观察的列表,其中人员数据由此函数填充:
class PersonUtil{
public Person FillPersonData(Person person){
... do something to fill the Person Data...
}
}
更新
抱歉我的错:我没有说我还需要Observable来订阅它而且Person类没有一个名为fillPersonData()的函数...让我说我有类似PersonUtil的东西.. 。
所以我需要这个来归还它:
Observable<List<Person>> myObservable = ...the Magic Code :-)
更新2:
我尝试了来自frhack的答案并且它有效。只是为了完整性,因为我在没有Lambdas的Android Studio中工作,没有Lambdas的代码:
Observable<Person> observable = Observable.from(personList)
.filter(new Func1<Person, Boolean>() {
@Override
public Boolean call(Person person) {
PersonUtil.FillMailData(person);
return true;
}
});
我希望是正确的方法......如果不是......告诉我,我改变了我的Update2 !!
答案 0 :(得分:3)
List<Person> personList = new ArrayList<Person>();
// populate personList
Observable.from(personList).forEach((person)-> {
person.setName(name);
person.setCity(city);
});
备用版本:
List<Person> personList = new ArrayList<Person>();
// populate personList
Observable.from(personList).forEach((person)-> p.fillPersonData() );
替代版本:
List<Person> personList = new ArrayList<Person>();
// populate personList
Observable<Person> observable = Observable.from(personList)
.filter((person) -> {
person.setName(name);
//PersonUtil.fillPersonData(person)
return true;
});
observable.forEach((pp)->System.out.println(pp));