// Path: libary/src/main/java/com/lain/loadmorehelper/list/IFooterViewCreator.java
// public interface IFooterViewCreator {
//     View getView(ViewGroup parent);
// }
// 
// Path: libary/src/main/java/com/lain/loadmorehelper/list/IListWrapper.java
// public interface IListWrapper {
//     public static final int STATE_INITIAL = 0;
//     public static final int STATE_LOAD_MORE = 1;
//     public static final int STATE_LOAD_FAILED = 2;
//     public static final int STATE_LOAD_COMPLETE = 3;
// 
//     void init(LoadController<?> loadController);
// 
//     void setState(@ListState int curState);
// 
//     @IntDef({STATE_INITIAL, STATE_LOAD_MORE, STATE_LOAD_FAILED, STATE_LOAD_COMPLETE})
//     @Retention(RetentionPolicy.SOURCE)
//     @interface ListState {
// 
//     }
// 
// }


import android.os.Handler;
import android.os.Looper;
import android.support.annotation.MainThread;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import com.lain.loadmorehelper.list.IFooterViewCreator;
import com.lain.loadmorehelper.list.IListWrapper;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
            return;
        }
        isPullingData = true;
        mCurrentPageIndex = 0;
        startLoadData(FIRST_PAGE_INDEX);
    }

    /**
     * Call when 1st page data loaded
     */
    @MainThread
    private void onPullDataEnd() {
        isPullingData = false;
        if (isDestoryed) {
            return;
        }
        if (paramBuilder.pullView != null) {
            paramBuilder.pullView.doPullEnd();
        }
    }

    /**
     * Call when recyclerview scroll to the end
     */
    @MainThread
    public void doLoadMore() {
        if (isPullingData || isLoadingMore || isDestoryed) {
            return;
        }
        isLoadingMore = true;
// Path: libary/src/main/java/com/lain/loadmorehelper/list/IFooterViewCreator.java
// public interface IFooterViewCreator {
//     View getView(ViewGroup parent);
// }
// 
// Path: libary/src/main/java/com/lain/loadmorehelper/list/IListWrapper.java
// public interface IListWrapper {
//     public static final int STATE_INITIAL = 0;
//     public static final int STATE_LOAD_MORE = 1;
//     public static final int STATE_LOAD_FAILED = 2;
//     public static final int STATE_LOAD_COMPLETE = 3;
// 
//     void init(LoadController<?> loadController);
// 
//     void setState(@ListState int curState);
// 
//     @IntDef({STATE_INITIAL, STATE_LOAD_MORE, STATE_LOAD_FAILED, STATE_LOAD_COMPLETE})
//     @Retention(RetentionPolicy.SOURCE)
//     @interface ListState {
// 
//     }
// 
// }


// Path: libary/src/main/java/com/lain/loadmorehelper/LoadController.java
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.MainThread;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import com.lain.loadmorehelper.list.IFooterViewCreator;
import com.lain.loadmorehelper.list.IListWrapper;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

            return;
        }
        isPullingData = true;
        mCurrentPageIndex = 0;
        startLoadData(FIRST_PAGE_INDEX);
    }

    /**
     * Call when 1st page data loaded
     */
    @MainThread
    private void onPullDataEnd() {
        isPullingData = false;
        if (isDestoryed) {
            return;
        }
        if (paramBuilder.pullView != null) {
            paramBuilder.pullView.doPullEnd();
        }
    }

    /**
     * Call when recyclerview scroll to the end
     */
    @MainThread
    public void doLoadMore() {
        if (isPullingData || isLoadingMore || isDestoryed) {
            return;
        }
        isLoadingMore = true;
        paramBuilder.listWrapper.setState(IListWrapper.STATE_LOAD_MORE);