Popularity
2.9
Growing
Activity
0.0
Stable
161
9
29

Description

Android pagination library

Programming language: Java

NoPaginate alternatives and similar packages

Based on the "Recyclerview Widget" category

Do you think we are missing an alternative of NoPaginate or a related project?

Add another 'Recyclerview Widget' Package

README

NoPaginate

Android Arsenal androidweekly.cn Download API

Android pagination library, based on @MarkoMilos repository Paginate

Loading Item Error Item

Gradle

implementation 'ru.alexbykov:nopaginate:0.9.9'

Install

  NoPaginate noPaginate = NoPaginate.with(recyclerView)
                .setOnLoadMoreListener(new OnLoadMoreListener() {
                    @Override
                    public void onLoadMore() {
                        //http or db request
                    }
                })
                .build();

If you use MVP or Clean Architecture, don't forget implement PaginateView. You can see example of implementation with MVP here

Actions

   noPaginate.showLoading(show);
   noPaginate.showError(show);
   noPaginate.setNoMoreItems(set); //Method onLoadMore will not to call
   noPaginate.unbind(); //Don't forget call it on onDestroy();

Custom Loading and Error

For custom error and loaging item just implement the interfaces ErrorItem or LoadingItem

Custom error:

public class CustomErrorItem implements ErrorItem {

           @Override
           public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
               View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_error, parent, false);
               return new RecyclerView.ViewHolder(view) {
               };
           }

           @Override
           public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, final OnRepeatListener repeatListener) {
               Button btnRepeat = (Button) holder.itemView.findViewById(R.id.btnRepeat);
               btnRepeat.setOnClickListener(new View.OnClickListener() {
                   @Override
                   public void onClick(View v) {
                       if (repeatListener != null) {
                           repeatListener.onClickRepeat(); //call onLoadMore
                       }
                   }
               });
           }
}

Custom loading:

public class CustomLoadingItem implements LoadingItem {

        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_loading, parent, false);
            return new RecyclerView.ViewHolder(view) {
            };
        }
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        }

}

Install with custom items and trigger threshold


  NoPaginate noPaginate = NoPaginate.with(recyclerView)
                .setOnLoadMoreListener(new OnLoadMoreListener() {
                    @Override
                    public void onLoadMore() {
                        //http or db request
                    }
                })
                .setLoadingTriggerThreshold(5) //0 by default
                .setCustomErrorItem(new CustomErrorItem())
                .setCustomLoadingItem(new CustomLoadingItem())
                .build();

Idea

This repository is a slightly modified version of Paginate library. Author: @MarkoMilos

We decided to modify it a little, so that developers could easily use it with MVP or Clean Architecture

Roadmap

  1. Double-sided pagination
  2. Delegate for Presenter or Interactor, with implementation Limit/Offset and Page pagination
  3. Unit tests
  4. Wiki

Contributing

If you find any bug, or you have suggestions, don't be shy to create issues or make a PRs in the develop branch. You can read contribution guidelines here

My other libraries:

  1. NoPermission — Simple Android permission library, consist of only one class
  2. NoRecyclerViewAdapter — Simple base adapter for recyclerView

    License

    Copyright 2017 Alex Bykov
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


*Note that all licence references and agreements mentioned in the NoPaginate README section above are relevant to that project's source code only.