Git Product home page Git Product logo

mugen's Introduction

mugen

mugen is a microlibrary for implementing infinite scroll on Android.

Android Arsenal Maven Central

Features

  • Add infinite scroll to your lists with a few lines of code.
  • Configuration allows you to decide how and when to trigger loading. You can even disable load more when all items have been fetched for network usage optimization.
  • Supports both AbsListView and RecyclerView! Which means it's one single library to enable infinite scroll for ListView, GridView and RecyclerView instances.

Usage

    //mCollectionView can be a ListView, GridView, RecyclerView or any instance of AbsListView!
    BaseAttacher attacher = Mugen.with(mCollectionView, new MugenCallbacks() {
            @Override
            public void onLoadMore() {
                /* Will be triggered when the next page has to be loaded.
                *
                * Do your load operation here.
                * Note: this is NOT asynchronous!
                */
            }

            @Override
            public boolean isLoading() {
                /* Return true if a load operation is ongoing. This will
                * be used as an optimization to prevent further triggers
                * if the user scrolls up and scrolls back down before 
                * the load operation finished.
                * 
                * If there is no load operation ongoing, return false
                */
                return isLoading;
            }

            @Override
            public boolean hasLoadedAllItems() {
                /*
                * If every item has been loaded from the data store, i.e., no more items are
                * left to fetched, you can start returning true here to prevent any more
                * triggers of the load more method as a form of optimization.
                *
                * This is useful when say, the data is being fetched from the network
                */
                return false;
            }
        }).start();

        /* Use this to dynamically turn infinite scroll on or off. It is enabled by default */
        attacher.setLoadMoreEnabled(true); 
        
        /* Use this to change when the onLoadMore() function is called. 
        * By default, it is called when the scroll reaches 2 items from the bottom */
        attacher.setLoadMoreOffset(4); 
        
        /*
        * mugen uses an internal OnScrollListener to detect and trigger load events.
        * If you need to listen to scroll events yourself, you can set this and 
        * mugen will automatically forward all scroll events to the listener.
        */
        attacher.setOnScrollListener(listener);

mugen in action

alt_tag

Notes

mugen will only start working AFTER there are enough items in the list to make it scrollable. Ensure that you load at least enough data first so that the list becomes scrollable.

Installation

There are two ways you can install mugen.

As a gradle dependency(preferred)

Add the line compile 'com.vinaysshenoy:mugen:1.0.0' to your dependencies section in your build.gradle script

Cloning and adding

  1. Clone the repository
  2. Copy the library folder into your project root.
  3. Add the line include ':library' to your settings.gradle file
  4. Then, add the line compile project(':library') to the build.gradle file in your main project.
  5. Do a Gradle sync, and you should be good to go!

License

Copyright 2014 Vinay S Shenoy

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.

mugen's People

Contributors

imran0101 avatar vinaysshenoy avatar

Watchers

 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.