【发布时间】:2019-07-19 23:13:38
【问题描述】:
我正在使用 MVVM 架构模式来创建应用程序。我正在使用 RxJava 包装器从房间数据库而不是 LiveData 中获取数据。我已经设置了我的
DAO 类和执行操作所需的所有方法。我想知道如何在存储库中使用 Flowable 或 Observable 运算符获取数据。
下面是我的代码:
UserDao.java
@Dao
public interface UserDao {
@Insert
void insert(User user);
@Query("SELECT * FROM Users ORDER BY id DESC")
Flowable<List<User>> getAllUsers();
}
UserRepository.java
public class UserRepository {
private UserDb userDb;
private UserDao userDao;
private Flowable<List<User>> allUsers;
private Context ctx;
public UserRepository(Application application) {
userDb = UserDb.getInstance(application);
userDao = userDb.userDao();
allUsers = userDao.getAllUsers();
ctx = application.getApplicationContext();
}
public void insert(final User user){
Completable.fromAction(() -> userDb.userDao().insert(user))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onComplete() {
Toast.makeText(ctx,"Data inserted", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable e) {
Toast.makeText(ctx,e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}
}
MainActivityViewModel.java
public class MainActivityViewModel extends AndroidViewModel {
private UserRepository repos;
public MainActivityViewModel(@NonNull Application application) {
super(application);
repos = new UserRepository(application);
}
}
请告诉我如何使用 RxJava 获取数据。任何帮助将不胜感激。
谢谢
【问题讨论】:
-
如何使用这个方法select qureys