我一直收到错误:
java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.widget.LinearLayout每当执行以下命令时:
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
LinearLayout mLinearLayout = (LinearLayout) layoutInflater.inflate(R.layout.item, parent, false);
return new ViewHolder(mLinearLayout);
}When没有任何意义,因为这是我的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_text_view"/>
</LinearLayout>因此,XML文件的根应该是LinearLayout,所以膨胀器应该返回LinearLayout,它从哪里获得FrameLayout呢?
发布于 2016-08-02 03:34:41
替换
LinearLayout mLinearLayout = (LinearLayout) layoutInflater.inflate(R.layout.item, parent, false);
return new ViewHolder(mLinearLayout);通过
View view = layoutInflater.inflate(R.layout.item, parent, false);
return new ViewHolder(view);编辑
ViewHolder的公共构造函数需要View,而不是LinearLayout。如果您需要访问此布局的子级,例如必须从findViewById访问的LinearLayout,例如:
您的项目布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/your_linear_layout_id"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_text_view"/>
</LinearLayout>你的ViewHolder
public class ExampleViewHolder extends RecyclerView.ViewHolder{
public ExampleViewHolder(View itemView) {
super(itemView);
LinearLayout linearLayout = (LinearLayout) itemView.findViewById(R.id.your_linear_layout_id);
}
}onCreateViewHolder
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = layoutInflater.inflate(R.layout.item, parent, false);
return new ViewHolder(view);
}https://stackoverflow.com/questions/38706648
复制相似问题