如何使用检测更改POJO模型? 查看示例
public class User {
String firstName;
String latsName;
}
和
public void main(){
User user = new User();
user.setFirstName("rasoul");
//detect change by rxJava or Rx android
}
我需要使用rxjava来检测变更模型用户
答案 0 :(得分:1)
一种方法是使用主题。您可以公开Observer
的基础Subject
并进行订阅。要通知您的数据更改,只需致电Subject.onNext
,所有订阅者都将收到更新的数据。
您可以在此处了解有关Subject t的更多信息
答案 1 :(得分:1)
您需要使模型可观察更改。
git push -u origin master
因为现在您可以观察到用户:
public class User {
public interface ChangeListener {
void onChanged(User user);
}
private List<ChangeListener> changeListeners = new CopyOnWriteArrayList<>();
public void addChangeListener(ChangeListener listener) {
this.changeListeners.add(listener);
}
public void removeChangeListener(ChangeListener listener) {
this.changeListeners.remove(listener);
}
private String firstName;
private String lastName;
public void setFirstName(String firstName) {
this.firstName = firstName;
for(ChangeListener changeListener: changeListeners) {
changeListener.onChanged(this);
}
}
}
现在您可以轻松地将其包装为可观察的:
user.addChangeListener((u) -> {
// user changed
});
现在您可以做
public class RxUser {
private RxUser() {}
public static Observable<User> observe(final User user) {
return Observable.create((emitter) -> {
final User.ChangeListener changeListener = (user) -> {
emitter.onNext(user);
}
emitter.setDisposable(Disposables.fromAction(() -> { user.removeChangeListener(listener); }));
user.addChangeListener(listener);
});
}