您好,
我想知道如何使用java-rx处理从存储库中删除
以下是我的域名的快速概述。
我的商业对象:
public class MyObject{
public boolean isActive();
public boolean isSelected();
}
一次只能激活或选择一个对象。
存储库:
public interface Repository{
Observable<MyObject> get();
void delete(MyObject obj); //do i really need this?
}
现在我想在某些情况下删除Objectes:
-Delete selected object only if more than 1 Object is in Repository
-if selected object == acvtive we have to set another object active
这是我的存储库的实现,就像我认为的那样:
public class RepositoryImpl implements Repository{
private void List<MyObject> myObjects;
@Override
public Observable<MyObject> get(){
if(myObjects != null) return Observable.from(myObjects);
return Observable.create((Observable.OnSubscribe<MyObject> subscriber -> {
try{
myObjects = gson.fromJson(...);
for(MyObject obj : myObjects){
subscriber.onNext(obj);
}
subscriber.onCompleted();
}catch(Exception e){
subscriber.onError(e);
}
}).observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io());
}
@Override
void delete(MyObject obj){
//we assume myObjects is filled
if(myObjects.size < 2) return;
boolean wasActive = false;
if(obj.isActive()){
wasActive = true;
}
myObjects.remove(obj);
MyObject first = myObjects.get(0);
first.setActive(wasActive);
first.setSelected(true);
}
所以第一个问题是,我是否必须在存储库中实现删除功能,或者是否有一种奇特的方法来处理从get方法获得的流的删除。
第二个是,是否有一种简单的方法可以通知UI(RecyclerView)有关存储库中的更改(我使用MVP而非绑定)?