I have class three classes. Pref, ClassA, and ClassB.
public class Pref{
public static ArrayList<Pref> prefList;
public static Observable<ArrayList<Pref>> observable;
public static void loadData(){
prefList = getFromDb();
observable = Observable.just(prefList);
}
}
Application runs the ClassA First.
public ClassA{
public ClassA(){
initObserver();
setObserver();
}
public void initObserver(){
Pref.loadData();
}
public void setObserver(){
Observer<ArrayList<Pref>> obs = new Observer() {
@Override
public void onSubscribe(Disposable dspsbl) {
System.out.println("Subscribed");
}
@Override
public void onNext(ArrayList<Pref>> t) {
System.out.println("Loading Preference.");
//Need to do some other works here.
}
@Override
public void onError(Throwable thrwbl) {
}
@Override
public void onComplete() {
}
};
Pref.observable.subscribe(obs);
}
}
Now I want to change the list from ClassB.
public class ClassB{
private void changeList(){
Pref.prefList = loadDataFromSomeSource();
}
}
When I run ClassA
, the System.out works
fine. But when I change the list from ClassB
nothing happens. My question is, is the right way to work with Rxjava
. Is it for Rxjava
built? If I am wrong how can I achieve this functionality? How can I write several ClassA
like classes so that When the ClassB::changeList()
runs, I can listen it in ClassA?