30k空港の長いリストをダウンロードし、オフラインデータベースに置く必要があります。rxJavaから抽出してrealmオフラインデータベースに置く方法は?
私はウェブからJSONをダウンロードするには、このコードを作った:
bFetch.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(GithubService.SERVICE_ENDPOINT).build();
GithubService service = retrofit.create(GithubService.class);
service.getAirport()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<List<Airport>>() {
@Override
public void onCompleted()
{
bClear.setText("OK");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(List<Airport> airports)
{
Log.d("msh",String.valueOf(airports.size()));
}
});
}
});
と、それは非常にうまく動作しますが、私は1つのオブジェクトのみを抽出したい場合は、マップやflatMapのように、それは私にこれを与えます:そう
Cannot resolve method 'subscribe(anonymous rx.Subscriber>)
:エラーと
service.getAirport()
.map(new Func1<List<Airport>, Airport>()
{
@Override
public Airport call(List<Airport> airports) {
return null;
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<List<Airport>>() {
@Override
public void onCompleted()
{
bClear.setText("OK");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(List<Airport> airports)
{
Log.d("msh",String.valueOf(airports.size()));
}
});
}
});
- 私はそれを解決するために何をしなければなりませんか?私の問題は、私は非常によくrXを理解していないと私は少し混乱があることです
- 私はマップ()メソッド(もしあれば)の領域データベースにデータを置くことができますか?
あなたはList<Airport>
からAirport
にマッピングしているので、あなたがonNext
メソッドに同じ変化に伴って、代わりにSubscriber<List<Airport>>
のSubscriber<Airport>
を持っている必要がありますあなたに
http://stackoverflow.com/documentation/android/3187/realm/14393/using-realm-with-rxjava#t=201608051116154137207 – EpicPandaForce
@EpicPandaForce私は別のサブスクリプションを行う方法を理解していません。 – nani
どこからレルムのデータを使用していますか – EpicPandaForce