我需要下载30k机场的长列表并将其放在离线数据库中。
我制作了这段代码来从网上下载json:
var filteredList = available.Where(a => !selected.Any(s => s.Id == a.Id))
.ToList();
并且效果很好,但如果我只想提取一个对象,比如map或flatMap,它会给我这个:
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()));
}
});
}
});
错误:
无法解析方法&#39;订阅(匿名 rx.Subscriber&GT)
这样:
谢谢
答案 0 :(得分:3)
由于您要从List<Airport>
映射到Airport
,因此需要Subscriber<Airport>
代替Subscriber<List<Airport>>
,同时对onNext
进行相同的更改import csv
import re
from tempfile import NamedTemporaryFile
import shutil
csvName = raw_input("Enter the filename: ")
tempfile = NamedTemporaryFile(delete=False)
newSize = 0
newArea = 0
with open(csvName, 'rb') as readCSV, tempfile:
reader = csv.reader(readCSV)
writer = csv.writer(tempfile)
for row in reader:
for col in row:
if col.startswith('Connection:'):
print col
if col.startswith('Size:'):
print "Current", col
newSize = raw_input("Enter new size: ")
newArea = int(newSize)*int(newSize)
col = re.sub('[0-9]+', newSize, col)
writer.writerow(row)
if col.startswith('Area:'):
col = re.sub('[0-9]+', str(newArea), col)
writer.writerow(row)
writer.writerow(row)
shutil.move(tempfile.name, csvName)
方法。
答案 1 :(得分:0)
看起来像是用Java8和RxJava2-RC5编译的。我将订阅者参数从List更改为X,将onNext方法从List更改为X.也许您可以在您的环境中提供更多的intel。请注意,在RxJava2中不再可以返回null。
另外请注意,使用newThread-Scheduler不是一个好主意。
此调度程序每次请求时都会启动一个新线程 通过订阅beOn()或observeOn()。 newThread()几乎不是一件好事 选择,不仅仅是因为启动时涉及的延迟 线程,也因为这个线程没有被重用。 --Tomaz Nurkiewicz来自&#34;使用RxJava进行反应性编程&#34;
使用RxJava2-RC5的示例-Impl
Observable.just(Arrays.asList("1", "2", "3"))
.map(new Function<List<String>, String>() {
@Override
public String apply(List<String> s) throws Exception {
return null;
}
}).subscribeOn(Schedulers.newThread())
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String value) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});