タイトルの通りに、オブジェクト型のコレクションList<Object>にRecyclerViewの要素となるオブジェクトを格納し、instanceofを用いてViewTypeを返すような以下のAdapterを書いたのですが、以下のエラーで表示できません。

エラー

 java.lang.NullPointerException: Attempt to write to field 'int android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType' on a null object reference

Adapterのコード

public class DragAdapter extends DragSortAdapter<FavoriteDragAdapter.ViewHolder> {

    private List<Object> mItemList;



    public DragAdapter(RecyclerView recyclerView) {
        super(recyclerView);
    }

    @Override
    public int getPositionForId(long l) {
        return mItemList.indexOf((int) l);
    }

    @Override
    public boolean move(int i, int i2) {
        mItemList.add(i, mItemList.remove(i2));
        return true;
    }


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view;
        ViewHolder holder;
        switch (viewType){
            case 0:
                view = inflater.inflate(R.layout.item_view_1, parent, false);
                holder = new ViewHolder(this, view);
                view.setTag(0);
                view.setOnClickListener(holder);
                view.setOnLongClickListener(holder);
                return holder;
            case 1:
                view = inflater.inflate(R.layout.item_view_2, parent, false);
                holder = new ViewHolder(this, view);
                view.setTag(1);
                view.setOnClickListener(holder);
                view.setOnLongClickListener(holder);
                return holder;
            default:
                return null;
        }
    }


    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        switch (holder.getItemViewType()){
            case 0:
                //Viewをセット
                break;
            case 1:
                //Viewをセット
                break;
        }
    }

    @Override
    public int getItemCount() {
        return mItemList.size() > 0 ? mItemList.size() : 0;
    }

    @Override
    public int getItemViewType(int position){
        //instanceof オブジェクトのクラスを確認してそれぞれのフラグを返す。
        if(mItemList.get(position) instanceof Hoge)
            return 0;
        else if(mItemList.get(position) instanceof Fuga)
            return 1;
        return -1;
    }

    /**
     *リストを追加する関数。
     * @param addData まとめて挿入したいデータ
     */
    public void addAll(List<Object> addData){
        mItemList.addAll(addData);
        notifyDataSetChanged();
    }

    static class ViewHolder extends DragSortAdapter.ViewHolder implements View.OnClickListener, View.OnLongClickListener{

        //@InjectView()....

        public ViewHolder(DragSortAdapter adapter, View itemView){
            super(adapter, itemView);
            ButterKnife.inject(this, itemView);
        }

        @Override
        public void onClick(View v) {

        }

        @Override
        public boolean onLongClick(View v) {
            startDrag();
            return true;
        }

        @Override
        public View.DragShadowBuilder getShadowBuilder(View itemView, Point touchPoint){
            return new NoForegroundShadowBuilder(itemView, touchPoint);
        }
    }

}

ちなみに、こちらの外部ライブラリを継承しています。(https://github.com/vinc3m1/DragSortAdapter)
あとViewの読み込みにButterKnifeを使っています。 LayoutManagerGridLayoutManagerです。 ①Object型のListではRecyclerViewの要素を指定できないのでしょうか。 ②instanceofでは判別できないのでしょうか。 もしできないのであれば別の方法を教えて下さい。 よろしくおねがいします。