gpt4 book ai didi

Android RecyclerView多 View classcastexception

转载 作者:搜寻专家 更新时间:2023-11-01 08:42:20 24 4
gpt4 key购买 nike

我将 RecyclerView 与三个 View 一起用于两个 View ,它工作正常,但是当我在最后添加第三个 View 时,它会给我类转换异常。

我想我在 recyclerview 中遗漏了一些东西,因为如果我在第二个位置使用我的第三个 View ,它就可以工作。请让我知道我缺少什么。

我的适配器:

@Override
public int getItemCount() {
return 10;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

View itemLayoutView;
ViewHolder viewHolder;

if(getItemViewType(i)==0){

itemLayoutView = LayoutInflater.from(context)
.inflate(R.layout.first, null);
viewHolder = new EnterHolder(itemLayoutView);
} else if (getItemViewType(i)==1){
itemLayoutView = LayoutInflater.from(context)
.inflate(R.layout.last, null);
viewHolder = new LastHolder(itemLayoutView);
}
else {
itemLayoutView = LayoutInflater.from(context)
.inflate(R.layout.image, null);
viewHolder = new ImageHolder(itemLayoutView);
}

return viewHolder;
}

@Override
public int getItemViewType(int position) {
if(position==0) return 0;
else if(position==9)return 1;
else return 2;
}

@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {

if(getItemViewType(i)==0){
EnterHolder enterHolder = (EnterHolder) viewHolder;
enterHolder.title.setText("first");
} else if(getItemViewType(i)==1){
LastHolder lastHolder = (LastHolder) viewHolder;
lastHolder.title.setText("last");
}
else {
ImageHolder imageHolder = (ImageHolder) viewHolder;
imageHolder.product_image.setImageResource(R.drawable.demo);
}

}

日志猫错误:

java.lang.ClassCastException:com.violetstreet.adapter.HorizontalAdapter$ImageHolder cannot be cast to com.violetstreet.adapter.HorizontalAdapter$

最佳答案

this is onCreateViewHolder 的签名:

public final VH createViewHolder (ViewGroup parent, int viewType)

因此,您将 viewType 作为参数传递给 getItemViewType(),但实际上您认为您传递的是 View 的位置

这是一个常见的错误。将您的代码 int i 更改为 int viewType 并且您会清楚地看到为什么您错了

关于Android RecyclerView多 View classcastexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31295714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com