Android ViewHolderHeader不能在BindViewHolder viewholder中强制转换

Android ViewHolderHeader不能在BindViewHolder viewholder中强制转换,android,Android,为什么我会有这个错误 java.lang.ClassCastException: com.example.pc.mytest.MainItemsRCVAdapter$ViewHolderHeader cannot be cast to com.example.pc.mytest.MainItemsRCVAdapter$ViewHolder 我正在尝试一个回收站一个标题和一个水平 这是一节课: public class MainItemsRCVAdapter extends RecyclerV

为什么我会有这个错误

 java.lang.ClassCastException: com.example.pc.mytest.MainItemsRCVAdapter$ViewHolderHeader cannot be cast to com.example.pc.mytest.MainItemsRCVAdapter$ViewHolder
我正在尝试一个回收站一个标题和一个水平

这是一节课:

public class MainItemsRCVAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private ArrayList<ListMainItem> mainItems;
    private Context mContext;
    private static final int TYPE_HEADER = 0;
    private static final int TYPE_ITEM = 1;


    public MainItemsRCVAdapter(Context context,ArrayList<ListMainItem> maindata) {
        setMaindata(maindata);
        this.mainItems = maindata;
        this.mContext = context;
    }

    public void setMaindata(ArrayList<ListMainItem> maindatahorizon) {
        this.mainItems = maindatahorizon;
    }

    public ArrayList<ListMainItem> getMaindata() {
        return mainItems;
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
        if (viewType == TYPE_ITEM) {
            //inflate your layout and pass it to view holder
            View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.main_adapter_horizontal, viewGroup, false);
            return new ViewHolder(v);
        } else if (viewType == TYPE_HEADER) {
            //inflate your layout and pass it to view holder
            View v =  LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.main_item_adapter, viewGroup, false);
            return new ViewHolderHeader(v);
        }
        throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly");

    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int i) {

        if (holder instanceof ViewHolder) {
//            String name = getDataVertical().get(position-1).getImages();
            String name =mainItems.get(i).geImgName();
            String urlimage =mainItems.get(i).getImgUrl();

            ((ViewHolder) holder).tv_items.setText(mainItems.get(i).geImgName());
           // holder.tv_items.setText(mainItems.get(i).geImgName());

            Log.d("###", "Setting name: " + name);

            Picasso.with(mContext)
                    .load(R.drawable.upload).resize(240, 120)
                    .into(((ViewHolder) holder).img_items);
            Log.d("###", "Setting url: " + urlimage);

        } else if (holder instanceof ViewHolderHeader) {
            //cast holder to VHHeader and set data for header.

            ((ViewHolder) holder).tv_items.setText(mainItems.get(i).geImgName());
            Log.d("####", "HEADER");
        }


//
//        viewHolder.tv_items.setText(mainItems.get(i).geImgName());
//        Picasso.with(mContext)
//                .load(mainItems.get(i)
//                        .getImgUrl()).resize(240, 120)
//                .into(viewHolder.img_items);

    }

    @Override
    public int getItemCount() {
        return mainItems.size();
    }

    @Override
    public int getItemViewType(int position) {
        if (isPositionHeader(position)) {
            return TYPE_HEADER;
        }

        return TYPE_ITEM;
    }

    private boolean isPositionHeader(int position) {
        return position == 0;
    }


    public class ViewHolder extends RecyclerView.ViewHolder{
        private TextView tv_items;
        private ImageView img_items;
        private ImageView mDataImgView;

        public ViewHolder(View view) {
            super(view);

            tv_items = (TextView)view.findViewById(R.id.tv_items_horz);
            img_items = (ImageView) view.findViewById(R.id.img_items_horz);
        }
        public ImageView getmDataImgView()
        {
            return mDataImgView;
        }
    }

    public class ViewHolderHeader extends RecyclerView.ViewHolder{
        private final RecyclerView mHorizontalRecyclerView;

        public ViewHolderHeader(View v) {
            super(v);
            mHorizontalRecyclerView = (RecyclerView) v.findViewById(R.id.recycler_view_horizontal);
            MainItemsRCVAdapterHorizontal mAdapter = new MainItemsRCVAdapterHorizontal(getMaindata(), mContext);
            LinearLayoutManager layoutManager
                    = new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false);

            mHorizontalRecyclerView.setLayoutManager(layoutManager);
            mHorizontalRecyclerView.setAdapter(mAdapter);
        }
    }
    }
public类MainItemsRCVAdapter扩展了RecyclerView.Adapter{
私有ArrayList主项;
私有上下文;
私有静态最终int TYPE_头=0;
私有静态最终整数类型\ u项=1;
public MainItemsRCVAAdapter(上下文上下文,ArrayList maindata){
设置主数据(主数据);
this.mainItems=maindata;
this.mContext=上下文;
}
公共无效setMaindata(ArrayList maindatahorizon){
this.mainItems=maindatahorizon;
}
公共阵列列表getMaindata(){
归还主要物品;
}
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup ViewGroup,int viewType){
if(viewType==类型\项){
//充气布局并将其传递给视图保持架
视图v=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.main_适配器_水平,viewGroup,false);
返回新的视图持有者(v);
}else if(viewType==类型\标题){
//充气布局并将其传递给视图保持架
视图v=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.main\u item\u适配器,viewGroup,false);
返回新的ViewHolderHeader(v);
}
抛出新的RuntimeException(“没有与类型“+viewType+”+匹配的类型,请确保正确使用类型”);
}
@凌驾
BindViewHolder上的公共void(RecyclerView.ViewHolder,int i){
if(视图保持架的保持架实例){
//字符串名称=getDataVertical().get(位置-1.getImages();
String name=mainItems.get(i).geImgName();
字符串urlimage=mainItems.get(i).getImgUrl();
((ViewHolder)holder.tv_items.setText(main items.get(i).geImgName());
//holder.tv_items.setText(mainpitems.get(i).geImgName());
Log.d(“####”,设置名称:“+name”);
毕加索(McContext)
.加载(R.drawable.upload).调整大小(240120)
.进入(((视图持有者)持有者)。img_项目);
Log.d(“###,”,设置url:“+urlimage”);
}else if(ViewHolderHeader的支架实例){
//将支架铸造到收割台,并设置收割台数据。
((ViewHolder)holder.tv_items.setText(main items.get(i).geImgName());
Log.d(“头”);
}
//
//viewHolder.tv_items.setText(main items.get(i).geImgName());
//毕加索(McContext)
//.load(主要项目)获取(i)
//.getImgUrl()).resize(240120)
//.into(viewHolder.img_项目);
}
@凌驾
public int getItemCount(){
返回mainItems.size();
}
@凌驾
public int getItemViewType(int位置){
if(isPositionHeader(位置)){
返回类型_头;
}
返回类型\ U项目;
}
专用布尔值isPositionHeader(int位置){
返回位置==0;
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
私人文本查看电视节目;
私有图像查看img_项目;
私有图像视图mDataImgView;
公共视图持有者(视图){
超级(视图);
tv_items=(TextView)view.findViewById(R.id.tv_items_horz);
img_items=(ImageView)view.findviewbyd(R.id.img_items_horz);
}
公共图像视图getmDataImgView()
{
返回mDataImgView;
}
}
公共类ViewHolderHeader扩展了RecyclerView.ViewHolder{
私人最终回收视图mHorizontalRecyclerView;
公共ViewHolderHeader(视图v){
超级(五);
mHorizontalRecyclerView=(RecyclerView)v.findViewById(R.id.recycler\u视图\u水平);
MainItemsRCVAdapterHorizontal mAdapter=新的MainItemsRCVAdapterHorizontal(getMaindata(),mContext);
直线布局经理布局经理
=新的LinearLayoutManager(mContext,LinearLayoutManager.HORIZONTAL,false);
mHorizontalRecyclerView.setLayoutManager(layoutManager);
mHorizontalRecyclerView.setAdapter(mAdapter);
}
}
}
这是水平线

public class MainItemsRCVAdapterHorizontal extends RecyclerView.Adapter<RecyclerView.ViewHolder> {


        private final ArrayList<ListMainItem> mData;
        private final Context mContext;

        public MainItemsRCVAdapterHorizontal(ArrayList<ListMainItem> dataHorizontal,Context context) {
            mData = dataHorizontal;
            mContext=context;
        }

        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_adapter_horizontal, parent, false);
            return new MainItemsRCVAdapterHorizontal.MyViewHolderHeader(v);
        }

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            String name = mData.get(position).geImgName();
            Log.d("###", "Setting name: " + name);
            //   ((RecyclerViewAdapterHorizontal.MyViewHolderHeader) holder).getmDataTextView().setText(name);
            ((MainItemsRCVAdapterHorizontal.MyViewHolderHeader) holder).getmDataImgView().setImageResource(mContext.getResources().getIdentifier(name, "drawable", "com.example.mohamadmouazen.lebgame.Adapters"));

        }

        @Override
        public int getItemCount() {
            return mData.size();
        }

        private class MyViewHolderHeader extends RecyclerView.ViewHolder {
            // private final TextView mDataTextView;
            private final ImageView mDataImgView;

            public MyViewHolderHeader(View v) {
                super(v);
                //    mDataTextView = (TextView) v.findViewById(R.id.data_vertical);
                mDataImgView = (ImageView) v.findViewById(R.id.img_items_horz);
            }

            public ImageView getmDataImgView() {
                return mDataImgView;
            }
/*        public TextView getmDataTextView() {
            return mDataTextView;
        }*/
        }
    }
public类MainItemsRCVAdapterHorizontal扩展了RecyclerView.Adapter{
私有最终ArrayList mData;
私有最终上下文mContext;
public MainItemsRCVAdapterHorizontal(ArrayList dataHorizontal,上下文){
mData=数据水平;
mContext=上下文;
}
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.main\u adapter\u horizontal,parent,false);
返回新的MainItemsRCVAdapterHorizontal.MyViewHolderHeader(v);
}
@凌驾
BindViewHolder上的公共无效(RecyclerView.ViewHolder,int位置){
String name=mData.get(position.geImgName();
Log.d(“####”,设置名称:“+name”);
//((RecycleServiceAdapterHorizontal.MyViewHolderHeader)holder).getmDataTextView().setText(名称);
((MainItemsRCVAdapterHorizontal.MyViewHolderHeader)holder).getmDataImgView().setImageResource(mContext.getResources().getIdentifier(名称,“drawable”,“com.example.mohamadmouazen.lebgame.Adapters”);
}
@凌驾
public int getItemCount(){
返回mData.size();
}
私有类MyViewHolderHeader扩展了RecyclerView.ViewHolder{
//私有最终文本视图mDataTextView;
私有最终图像视图mDataImgView;
公共MyViewHolderHeader(视图v){
超级(五);
//mDataTextView=(TextView)v.findviewbyd(R.id.data\u垂直);
        } else if (holder instanceof ViewHolderHeader) {
            //cast holder to VHHeader and set data for header.

            ((ViewHolder) holder).tv_items.setText(mainItems.get(i).geImgName());
            Log.d("####", "HEADER");
        }