java - GreenDao 异步 loadAll 方法

标签 java android greendao

我可以使用 GreeDAO 成功地异步插入行的 AsyncSession像这样:

getMyObjectDao().getSession().startAsyncSession().insertOrReplaceInTx(MyObject.class, list);

如何将数据库中的所有对象异步加载到 ArrayList 中。到目前为止,我已经尝试了以下代码,但它不起作用:

1-

<List>items = getBoxDao(c).getSession().startAsyncSession().loadAll(MyObject.class) ;

2-

        @Override
        public void onAsyncOperationCompleted(AsyncOperation operation) {
            String operationIs = null;

            switch (operation.getType()) {

                case LoadAll:
            itemsList = BoxRepository.getAllBoxes(getApplicationContext());

最佳答案

您可以使用 operation.getResult() 方法获取获取的 arrayList,如下所示:

AsyncSession asyncSession = App.getInstance().daoSession.startAsyncSession();
    asyncSession.setListener(new AsyncOperationListener() {
        @Override
        public void onAsyncOperationCompleted(AsyncOperation operation) {
            itemsList = (List<MyObject>) operation.getResult();
        }
    });
    asyncSession.loadAll(MyObject.class);

更新: BoxRepository 只是一个 Helper 类,它的 getAllBoxes() 会同步加载所有数据,但您可以轻松地添加另一个像这样异步加载所有数据的方法:

public static void getAllBoxes(Context context, AsyncOperationListener listener) {
    AsyncSession asyncSession = App.getInstance().daoSession.startAsyncSession();
    asyncSession.setListener(listener);
    asyncSession.loadAll(Box.class);
}

关于java - GreenDao 异步 loadAll 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30121550/

相关文章:

java - 如何从 Java 连接到 Websphere 数据源?

java - hibernate只读查询缓存机制

java - 如何使用 Eclipse 从相同代码自动构建不同的 JAR?

android - 同一布局中的第二个 float 操作按钮没有波纹

android - Android 上的 GreenDAO : Byte Array as Primary Key/Building Query Containing Where Clause on Byte Array Property

android - Android Studio,NavDrawer和支持库问题

java - Function<T, Boolean> 到 Predicate<T> 的 guava 转换器

android - 统一自动调整多个 TextView 的大小

android - onContextItemSelected 未在 Fragment 中调用

android - 在 android 中找到距离 db 最近的 25 个地方很慢