gpt4 book ai didi

android - 高效适配器有java.lang.ClassCastException?

转载 作者:太空狗 更新时间:2023-10-29 16:19:31 26 4
gpt4 key购买 nike

看完here我尝试实现我自己的高效适配器,

我的 ViewHolder 类几乎相同:

static class ViewHolder {
ImageButton button;
TextView txtView;
}

getView 方法如下所示:

private void getView(...) {

if(convertView == null) {
convertView = LayoutInflater.from(
parent.getContext()).inflate(R.layout.linear_container,
parent, false);

holder = new ViewHolder();
convertView.setTag(holder);
} else {
// erro line
holder = (ViewHolder) convertView.getTag();
}

LinearLayout llCustomImgViewContainer = (LinearLayout) convertView
.findViewById(R.id.llContainer);
llCustomImgViewContainer.setTag(viewPosition);

return converView;
}

但是一旦新 View 开始绘制,它就会给我错误

D/AndroidRuntime(748):关闭虚拟机W/dalvikvm(748): threadid=1: 线程以未捕获的异常退出 (group=0x412a4300)E/AndroidRuntime(748):致命异常:主要E/AndroidRuntime(748): java.lang.ClassCastException: java.lang.Integer 无法转换为 com.droid.test.widget.customListView$CustomBaseAdapter$ViewHolder

有人知道这里出了什么问题吗?

最佳答案

一开始好像是用

convertView.setTag(holder);

你正在设置与此 View 相关联但稍后与

相关联的标签(持有者)的行
llCustomImgViewContainer.setTag(viewPosition);

您正在将 viewPosition 设置为标签。那么可能在

holder = (ViewHolder) convertView.getTag();

您的代码试图将 Integer 转换为 ViewHolder 并抛出 java.lang.ClassCastException。

如果我没记错的话,这就是“linear_container”布局的结构

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/llContainer">

<!-- some views -->

</LinearLayout>

返回的 View
LayoutInflater.from(parent.getContext()).inflate(R.layout.linear_container,parent,false);

以及从

返回的 View
convertView.findViewById(R.id.llContainer);

应该是一样的

关于android - 高效适配器有java.lang.ClassCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18382443/

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