如何使用 RXJava/Android 更改对象列表中的字段
How can i change a Field in a List of Objects with RXJava/Android
我有一个 List myPersonList,我想填写每个项目的名称和城市。我的ID已经填好了。我可以创建一个 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 Class 有一个名为 fillPersonData() 的函数...让我说我有一些东西像 PersonUtil...
所以我需要这个 return 它:
Observable<List<Person>> myObservable = ...the Magic Code :-)
更新二:
我尝试了 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!
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));
我有一个 List myPersonList,我想填写每个项目的名称和城市。我的ID已经填好了。我可以创建一个 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 Class 有一个名为 fillPersonData() 的函数...让我说我有一些东西像 PersonUtil...
所以我需要这个 return 它:
Observable<List<Person>> myObservable = ...the Magic Code :-)
更新二:
我尝试了 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!
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));