RxJava 2 与 Room 查询实操

从上一篇Room & RxJava 的使用引申而来的代码实际操作。

1. 定义一个数据库接口

@Dao
public interface UserDao {
    @Query("select * from user")
    Flowable> getUsers();

    @Query("select * from user limit 1")
    Flowable getUser();
}


2. 查询数据库

// ViewModel/DataRepository类:

public Flowable> getUsers(){
        return database.userDao().getUsers();
    }

database为AppDatabase类,继承RoomDatabase。详见BasicSample中的AppDatabase类。

3. 在UI中引用

// Activity 或 Fragment类:

 userViewModel.getUsers()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer>() {
                    @Override
                    public void accept(List entities) throws Exception {
                        adapter.setList(entities);
                    }
                })
        ;

你可能感兴趣的:(Android学习)