如何使用kotlin

时间:2017-06-30 09:30:25

标签: java android android-recyclerview realm kotlin

我需要实现一个在Parse上显示我的查询的recyclerView,所以我已经完成了它:

 private class Pagination extends RecyclerView.OnScrollListener{

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

        visibleItemCount = manager.getChildCount();
        totalItemCount = manager.getItemCount();
        firstVisibleItemPosition = manager.findFirstVisibleItemPosition();


        if (!isLoading && !isLastPage) {
            if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount
                    && firstVisibleItemPosition >= 0
                    && totalItemCount >= PAGINATION) {
                isLoading = true;

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        loadData();
                    }
                }, 2000);
            }
        }
    }
}

它运作良好。但几个月前,我使用了不带分页功能的realm recyclerView适配器(它工作得非常好,因为我要显示50k项目),我想制作这样的适配器。我也使用Kotlin,我已经看到了懒惰变量的概念:

val lazyValue: String by lazy {
println("computed!")
"Hello"
}

但是由于这个原因,我不知道如何使用它来制作适配器:现在,当我进行查询以解析它时,就像这样:

 val dishes = ParseQuery.getQuery<ParseObject>("Books").setSkip(index).setLimit(pagination)

 dishes.findInBackground { objects, e -> e?.let { listener?.onPaginationError(e.message)  } ?:run { createNewDish(objects,listener,false)  } }

以及当我使用惰性方法时它是如何工作的?我需要下载所有项目,或者我还需要分页?

1 个答案:

答案 0 :(得分:0)

我使用了不带分页的realm recyclerView适配器(并且它工作得非常好,因为我要显示50k项目)并且我想制作这样的适配器。

实际上这是Realm的魔力,而不是它的适配器。而你无法获得相同的品味,因为Realm的延迟加载架构将比其他服务器端分页更快。对不起,你不能模仿它。

我需要下载所有项目,或者我还需要分页?

如果服务器端数据源无法处理分页请求,则必须先加载所有项目,然后在客户端查询并让适配器在recyclerview上显示项目

当我使用惰性方法时它是如何工作的?

我理解的是,你想要结合kotlin的懒惰和分页?

适配器需要一个数据集(可能是数据源中10到20之间的项目),以便在需要时显示。所以我看不出kotlin懒惰的任何适当用法。