@Override
    public void onBindViewHolder(K holder, int positions) {
        int viewType = holder.getItemViewType();

        switch (viewType) {
            case 0:

                convert(holder, mData.get(holder.getLayoutPosition() - getHeaderLayoutCount()),holder.getLayoutPosition() - getHeaderLayoutCount());
                break;
            case LOADING_VIEW:
                mLoadMoreView.convert(holder);
                break;
            case HEADER_VIEW:
                break;
            case EMPTY_VIEW:
                break;
            case FOOTER_VIEW:
                break;
            default:
                convert(holder, mData.get(holder.getLayoutPosition() - getHeaderLayoutCount()),holder.getLayoutPosition() - getHeaderLayoutCount());
                break;
        }
    }
To bind different types of holder and solve different the bind events

@param holder
@param positions
@see #getDefItemViewType(int)
common/src/main/java/com/sxjs/common/base/baseadapter/BaseQuickAdapter.java