Android Room with RxJava)を使用して単一行クエリを作成するにはどうすればよいですか?アイテムのリストをクエリできますが、問題はありません。ここで、特定の行が存在するかどうかを確認したいと思います。ドキュメントでは、行が存在しない場合、Singleを返し、EmptyResultSetException例外を確認できるようです。
私は次のようなものを持つことができます:
@Query("SELECT * FROM Users WHERE userId = :id LIMIT 1")
Single<User> findByUserId(String userId);
この通話の使い方を教えてください。 onError/onSuccessがあるようですが、Single <>でこれらのメソッドを見つけることができません。
usersDao.findByUserId("xxx").???
どんな実例も素晴らしいでしょう!
ドキュメントによると、行が存在しない場合は、Singleを返し、EmptyResultSetException例外を確認できるようです。
または、他の方法でバックグラウンドスレッドを処理している場合は、User
を返します。
_@Query("SELECT * FROM Users WHERE userId = :id")
User findByUserId(String id);
_
この通話の使い方を教えてください。
_usersDao.findByUserId("xxx")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user -> { ... }, error -> { ... });
_
ここでは、User
とエラーに対して、2つのラムダ式を取るsubscribe()
を示します。代わりに2つのConsumer
オブジェクトを使用できます。また、AndroidSchedulers.mainThread()
の依存関係としてrxandroid
があり、User
がそのスレッドで配信されることを前提としています。
IOW、これはRxJavaの他のSingle
を使用するのと同じ方法で使用します。詳細は必要に応じて異なります。