私はショッピングカートを備えたAndroidアプリケーションを開発中です。 Cart
オブジェクトはjava.lang.Observable
に拡張されるため、変更があった場合はすぐにディスクに保存され、バッジアイコンを更新することもできます。java.lang.ObservableからRxJavaへの移行
public class Cart extends Observable{
private Set<Product> products;
public Cart(){
products = new HashSet<>();
}
public Cart(Collection<Product> products){
this.products = new HashSet<>(products);
}
public int getTotalItems() {
return products.size();
}
public void clear(){
products.clear();
setChanged();
notifyObservers();
}
public void addProduct(Product product){
products.add(product);
setChanged();
notifyObservers();
}
public void removeProduct(Product product){
products.remove(product);
setChanged();
notifyObservers();
}
public void updateProduct(Product product){
products.remove(product);
products.add(product);
setChanged();
notifyObservers();
}
public List<Product> getProducts() {
return new ArrayList<>(products);
}
}
使用例
public class MainActivity extends BaseActivity implements Observer {
Cart mCart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
getApp().getCart().addObserver(this);
setCartItemsCount(getApp().getCart().getTotalItems());
//...
}
@Override
protected void onDestroy() {
super.onDestroy();
if (getApp().getCart() != null) {
getApp().getCart().deleteObserver(this);
}
}
@Override
public void update(Observable observable, Object data) {
if (observable instanceof Cart) {
setCartItemsCount(((Cart) observable).getTotalItems());
}
}
}
私はRxJavaにこのコードを移行したいのですが、私はそれについて移動する方法についての明確な考えを持っていません。私が読んだところでは、私はBehavioralSubject
を使用するはずですが、私が私のシナリオに読んだ例をどのように適応させるかはわかりません。
いくつかのガイダンスや例があれば分かります。