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");
}