Coder Social home page Coder Social logo

paginationrecyclerview's Introduction

PaginationRecyclerView

This library based on RecyclerView, and has a purpose easy work with lazy loading (pagination) data.

You can use this library with our other library for work with Network API: https://github.com/JDroidCoder/apiservice

Install:

  • Add jitpack repository in gradle(project level)
  • 	allprojects {
    		repositories {
    			...
    			maven { url 'https://jitpack.io' }
    		}
    	}
    
  • Add dependency in gradle(app level)
  • dependencies {
    	implementation 'com.github.JDroidCoder:PaginationRecyclerView:v1.0.0'
    }
    
  • enjoy ;)

Initialize library:

  • Init in the xml
  • <jdroidcoder.ua.paginationrecyclerview.PaginationRecyclerView
    		android:id="@+id/paginationRecyclerView"
    		android:layout_width="match_parent"
    		android:layout_height="match_parent" />
    
  • Add OnPageChangeListener
  •   
     paginationRecyclerView?.setOnPageChangeListener(object : OnPageChangeListener {
        override fun onPageChange(page: Int) {
           // Here you will receive next page
        }
    })
    

    Code example: Xml (activity_main):

    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	    xmlns:tools="http://schemas.android.com/tools"
    	    android:layout_width="match_parent"
    	    android:layout_height="match_parent"
    	    tools:context=".MainActivity">
    	    
    	    <jdroidcoder.ua.paginationrecyclerview.PaginationRecyclerView
    		android:id="@+id/paginationRecyclerView"
    		android:layout_width="match_parent"
    		android:layout_height="match_parent"
    		tools:context=".MainActivity" />
    </android.support.constraint.ConstraintLayout>
    

    Activity class:

    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            val adapter =  RecyclerViewAdapter(generateList(1))
            paginationRecyclerView.adapter =adapter
            paginationRecyclerView?.layoutManager = LinearLayoutManager(this)
            paginationRecyclerView?.setOnPageChangeListener(object : OnPageChangeListener {
                override fun onPageChange(page: Int) {
                    adapter.addItems(generateList(page))
                }
            })
        }
    
        private fun generateList(page: Int): ArrayList {
            val arrayList = ArrayList()
            for (i in 0..10) {
                arrayList.add("Item $i page $page")
            }
            return arrayList
        }
    }
    

    item_style.xml:

    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/itemTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:textSize="20sp" />
    

    RecyclerViewAdapter:

    class RecyclerViewAdapter(private val items: ArrayList) : RecyclerView.Adapter() {
    
        override fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder {
            return ViewHolder(LayoutInflater.from(parent?.context).inflate(R.layout.item_style, parent, false))
        }
    
        override fun onBindViewHolder(holder: ViewHolder, position: Int) {
            holder.itemTextView.text = items?.get(position)
        }
    
        override fun getItemCount(): Int {
            return items.size
        }
        
        fun addItems(items: ArrayList){
            this.items.addAll(items)
            notifyDataSetChanged()
        }
    }
    
    class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val itemTextView: TextView = view.itemTextView
    }
    

    If you have any question ask us here or write to email: [email protected]

    paginationrecyclerview's People

    Contributors

    jdroidcoder avatar anonunfeeling avatar

    Stargazers

    Sam avatar Davide d0sse avatar Hugo Maldonado avatar Abirul Alam avatar Adhiambo Oyier avatar Ari Sumardi avatar YuriiZhovnir avatar Julia Kozhukhovskaya avatar Pronoy Mandal avatar Jean Patricio avatar Cédric CARNIEL avatar  avatar  avatar Alessandro Valenza avatar Ardidy avatar 行一 avatar Muhammad Syakir Arif avatar Fida Muntaseer avatar alphaDroid89 avatar Dzhunet Hasan avatar  avatar Pranav Lathigara avatar Bhargav Pandya avatar Iago Mendes Fucolo avatar David Ruiz avatar

    Watchers

    James Cloos avatar  avatar

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.