Android 将可观察列表更改为Hashmap Singleton
我有一个单例来缓存对象,从这里我从一个列表中创建了一个可观察的对象,这个列表是API的一个响应,其中填充了对象。(JSON)Android 将可观察列表更改为Hashmap Singleton,android,rx-java,retrofit2,Android,Rx Java,Retrofit2,我有一个单例来缓存对象,从这里我从一个列表中创建了一个可观察的对象,这个列表是API的一个响应,其中填充了对象。(JSON) 私有静态行为Subject Observable模型列表; private static Observable=myAPI.loadModelsRx(); 私有静态订阅; 私人泊辛格尔顿(){ } 公共静态PoiSingleton getInstance(){ 回归自然状态; } 公共静态无效重置可观察(){ ObservablePostList=BehaviorSubj
私有静态行为Subject Observable模型列表;
private static Observable=myAPI.loadModelsRx();
私有静态订阅;
私人泊辛格尔顿(){
}
公共静态PoiSingleton getInstance(){
回归自然状态;
}
公共静态无效重置可观察(){
ObservablePostList=BehaviorSubject.create();
if(subscription!=null&&!subscription.isunsubscripted()){
订阅。取消订阅();
}
订阅=可观察的。订阅(新订阅方(){
@凌驾
未完成的公共无效(){
//无所事事
}
@凌驾
公共无效申报人(可丢弃的e){
ObserviePislist.onError(e);
}
@凌驾
public void onNext(列出型号){
ObservablePostList.onNext(模型);
}
});
}
公共静态可观察getPoisObservable(){
如果(ObservablePostList==null){
重置可观察();
}
返回观察列表;
}
我想要实现的是从列表中创建一个HashMap,键应该是对象的ID和对象本身的值
我是Android新手,对/RxJava进行了改进,那么它在什么方法/阶段负责创建HashMap?尝试
Observable.map()
Operator使用.flatmapetable(I->I).toMap(Poi::getKey,Poi::getValue)
在订阅调用之前。@TassosBassoukos在Observable或observableModelsList上?尝试Observable.map()
operator在subscribe调用之前使用.flatMapIterable(i->i).toMap(Poi::getKey,Poi::getValue)
。@TassosBassoukos在observable或observableModelsList上?
private static BehaviorSubject<List<Model>> observableModelsList;
private static Observable<List<Model>> observable = myAPI.loadModelsRx();
private static Subscription subscription;
private PoiSingleton() {
}
public static PoiSingleton getInstance() {
return ourInstance;
}
public static void resetObservable() {
observablePoisList = BehaviorSubject.create();
if (subscription != null && !subscription.isUnsubscribed()) {
subscription.unsubscribe();
}
subscription = observable.subscribe(new Subscriber<List<Model>>() {
@Override
public void onCompleted() {
// do nothing
}
@Override
public void onError(Throwable e) {
observablePoisList.onError(e);
}
@Override
public void onNext(List<Model> models) {
observablePoisList.onNext(models);
}
});
}
public static Observable<List<Poi>> getPoisObservable() {
if (observablePoisList == null) {
resetObservable();
}
return observablePoisList;
}