使用MVP模式

时间:2018-01-09 07:37:44

标签: android android-recyclerview mvp

我正在寻找最佳实践。我想在每10个项目之后实现加载更多[progressbar](使用RecyclerView)。 在过去,我通过简单地创建 Loader 类项目并添加到我的 List 中的特定位置来完成此操作。好吧,这次,我正在使用PairList,并且不可能添加Loader类项目(即使我个人认为,这是一个非常干净的方法)。

我在SO上找到了一些解决方案,几乎相同:How to implement load more recyclerview in android

有没有其他方法可以在每10个元素之后实现此加载更多进度条(首先从API加载10个项目,然后,当用户到达第10个项目时,我们显示进度条[同时我们获取接下来的10个项目],删除进度条,添加10项等)。

1 个答案:

答案 0 :(得分:2)

在您的回收商scrollListener中使用此InfiniteScrollListener:

public abstract class InfiniteScrollListener extends RecyclerView.OnScrollListener {

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
    if (dy > 0) {
        LinearLayoutManager linearLayoutManager = (LinearLayoutManager)recyclerView.getLayoutManager();
        int visibleItemCount = linearLayoutManager.getChildCount();
        int totalItemCount = linearLayoutManager.getItemCount();
        int pastVisiblesItems = linearLayoutManager.findFirstVisibleItemPosition();

        if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {
            loadMore();
        }
    }
}

protected abstract void loadMore();}

recyclerView Listener:

recyclerView.addOnScrollListener(new InfiniteScrollListener() {
        @Override
        protected void loadMore() {
            boolean willLoad = //get your last api call data. if empty set false
            int offset = recyclerView.getAdapter().getItemCount();
            if(willLoad){

                willLoad=false;
                onCallApi(offset,10);
            }

        }
    });
你的api:

 private void onCallApi(int offset,int limit){
    //your api
}