ローカルデータベース(SugarORM)を使用していますが、データベースが変更されたときにUIを更新するためにRXJavaを実装しています。データ変更時にUIが更新されない
活動が開始されると、それは新しいオブザーバーをサブスクライブ:私のプレゼンタークラスで
@Override //This is happening inside doInBackground !
public void onLoading() {
presenter.getRxProducts().subscribe(new Observer<List<Product>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(List<Product> products) {
adapter = new SimpleProductAdapter(getApplicationContext(), R.layout.row_simple_product,
products);
}
});
}
@Override //This happens inside onPostExecute() !
public void onLoadingComplete() {
lvProducts.setAdapter(adapter);
super.onLoadingComplete();
}
、メソッドgetRxProductsは、次のようになります。
public Observable<List<Product>> getRxProducts(){
return Observable.fromCallable(new Callable<List<Product>>(){
@Override
public List<Product> call() throws Exception {
return getAllProducts(Product.Sorting.NONE); //This returns a List<Product> object.
}
});
}
データは、UIで[OK]を探しますObservable<List<Product>>
のいずれかの要素に変更を加えても、UIに変更はありません。私は私が行方不明になることができますか?
メインのUIスレッドをブロックしないように '.subscribeOn(Schedulers.io())&.observeOn(AndroidSchedulers.mainThread())'する必要があります。また、私は、アクティビティのonCreateのlistview/recyclerviewにアダプタを設定し、アダプタの 'notifyDataSetChanged()'を呼び出します – Raghunandan