https://github.com/NoNews/NoPaginate
  
  
    Android pagination library (updated 01.05.2018) 
    https://github.com/NoNews/NoPaginate
  
android android-library pagination recyclerview wrapper
        Last synced: 3 months ago 
        JSON representation
    
Android pagination library (updated 01.05.2018)
- Host: GitHub
 - URL: https://github.com/NoNews/NoPaginate
 - Owner: NoNews
 - License: apache-2.0
 - Created: 2017-08-14T10:22:08.000Z (about 8 years ago)
 - Default Branch: master
 - Last Pushed: 2022-01-12T15:16:41.000Z (almost 4 years ago)
 - Last Synced: 2024-08-16T14:34:42.250Z (about 1 year ago)
 - Topics: android, android-library, pagination, recyclerview, wrapper
 - Language: Java
 - Homepage:
 - Size: 199 KB
 - Stars: 183
 - Watchers: 10
 - Forks: 31
 - Open Issues: 5
 - 
            Metadata Files:
            
- Readme: README.md
 - Contributing: CONTRIBUTING.md
 - License: LICENSE
 
 
Awesome Lists containing this project
- awesome-android - NoPaginate - Simple Android pagination library (Libraries / GUI)
 - awesome-android - NoPaginate - Simple Android pagination library (Libraries / GUI)
 
README
          # NoPaginate
[](https://android-arsenal.com/details/1/6300)
[](http://androidweekly.cn/android-dev-weekly-issue-156/)
 [  ](https://bintray.com/nonews/maven/nopaginate/_latestVersion)
 [](https://android-arsenal.com/api?level=null)
Deprecated. 
Android pagination library, based on [@MarkoMilos](https://github.com/MarkoMilos) repository [Paginate](https://github.com/MarkoMilos/Paginate)
Loading Item           |  Error Item
:-------------------------:|:-------------------------:
  | 
### Gradle
```
implementation 'ru.alexbykov:nopaginate:0.9.9'
```
### Install
```java
  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](https://github.com/NoNews/NoPaginate/tree/master/sample/src/main/java/ru/alexbykov/pagination)
### Actions
```java
   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:
```java
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:
```java
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
```java
  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](https://github.com/MarkoMilos/Paginate) library.
Author: [@MarkoMilos](https://github.com/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](https://github.com/NoNews/NoPaginate/issues) or make a [PRs](https://github.com/NoNews/NoPaginate/pulls) in the `develop` branch.
You can read contribution guidelines [here](https://github.com/NoNews/NoPaginate/blob/master/CONTRIBUTING.md)
#### My other libraries:
1. [NoPermission](https://github.com/NoNews/NoPermission) — Simple Android permission library, consist of only one class
1. [NoRecyclerViewAdapter](https://github.com/NoNews/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.
```