9902


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

**エラー**

[code]

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

**Adapterのコード**

[code]

    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);
            }
        }
    
    }
    
[/code]

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


CC BY-SA 3.0
2015-04-28T12:33:50.540
9653
2015-05-07T13:05:15.367
2015-04-28T15:11:59.307
7232
7232
question
android
RecyclerViewにてオブジェクトの型でViewTypeを判別したい｡


別の箇所のミスで`mItemList`の中身がnullになっていました｡


CC BY-SA 3.0
2015-05-07T13:05:15.367
9902
2015-05-07T13:05:15.367
7232
9653
answer