gpt4 book ai didi

java - 通用 rxjava2 数据库访问层

转载 作者:行者123 更新时间:2023-12-02 12:06:05 29 4
gpt4 key购买 nike

我刚刚开始使用 java/rxjava2/android dev 并设法获得以下工作示例:

    Observable<Object> source3 = Observable.create(emitter-> {
cursor = app.dbh.getAlllTransactions2();
emitter.onNext(cursor);
emitter.onComplete();
}).subscribeOn(Schedulers.io());

source3.subscribe(c -> {
transactionAdapter = new TransactionCursorAdapter(this.getActivity(), (Cursor)c);
LSTVW_transactions.setAdapter(transactionAdapter);
});

现在我有两个问题:

  1. 我怎么被迫使用 Object 作为类型。如果我用其他东西android studio 表示它期望 Object.是因为 lambda 表达式吗?我之前做过测试,他们允许我使用任何类型。
  2. 我想以更通用的方式制作以下内容。目标是让 Observable 作为结果,并以任意 db 函数作为参数,然后一般调用该函数。我发现的一个较旧的示例可以在这里找到,但我不知道如何将其转换为 lambda/rxjava2 样式(原始链接: https://dzone.com/articles/easy-sqlite-android-rxjava )

我想要转换的此类设置的示例:

private static <T> Observable<T> makeObservable(final Callable<T> func) {
return Observable.create(
new Observable.OnSubscribe<T>() {
@Override
public void call(Subscriber<? super T> subscriber) {
try {
subscriber.onNext(func.call());
} catch(Exception ex) {
Log.e(TAG, "Error reading from the database", ex);
}
}
});
}

最佳答案

试试这个:

Observable.create((ObservableOnSubscribe<YourType>) e -> { ... }

我不明白你想用第二个片段实现什么,但我认为你可以简化这个主体,对于 makeObservable 方法(我刚刚删除了 try-catch部分):

return Observable.create(e -> e.onNext(func.call()));

关于 Rx 滥用:我认为将游标作为流的项目传递不是一个好主意。您可能会从数据库中读取数据流,以便您的观察者可以做出正确的 react 。

关于java - 通用 rxjava2 数据库访问层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46902745/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com