android.view.InflateException:二进制XML文件行#0:错误输出类<unknown>!

时间:2018-06-06 10:44:16

标签: android infinite-scroll android-inflate

这是可以显示错误的方法。

错误:

引起:

android.view.InflateException: Binary XML file line #0: Error inflating class <unknown>                                                                       

引起:

java.lang.reflect.InvocationTargetException

下面的代码,

.inflate(R.layout.item_layout, parent, false); 

显示错误..

这是onCreateViewHolder,它有错误。

    @Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int 
viewType) {

    if (viewType == VIEW_TYPE_ITEM)
    {
        View view = LayoutInflater.from(activity)
                .inflate(R.layout.item_layout, parent, false);
        return new ItemViewHolder(view);
    }
    else if ( viewType == VIEW_TYPE_LOADING){
        View view = LayoutInflater.from(activity)
                .inflate(R.layout.item_loading, parent, false);
        return new LoadingViewHolder(view);
    }
    return null;
}

这是item.layout xml代码! 我以为这个xml文件与错误有关。所以我发布了这个。感谢!!!

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height= "wrap_content"
    android:orientation="vertical"
app:cardElevation="10dp"
android:layout_margin="10dp"
>

<LinearLayout
    android:orientation="vertical"
    android:padding="10dp"
    android:layout_width="match_parent"
    android:background="?android:selectedWeekBackgroundColor"
    android:layout_height="wrap_content">

<TextView
    android:id="@+id/txtName"
    android:text="Name"
    android:textSize="16sp"
    android:textColor="@android:color/black"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<TextView
    android:id="@+id/txtLength"
    android:text="length"
    android:textSize="16sp"
    android:textColor="@android:color/black"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

查看您的问题,您似乎对getItemViewType中的RecyclerView.Adapter方法有疑问。

此方法的默认实现返回0,假设适配器具有单一视图类型。由于您期望不同的视图类型,因此请确保您明智地覆盖了此方法。

如果您尚未实施getItemViewType,那么您的onCreateViewHolder将始终返回null ViewHolder,因为它永远不会与您的VIEW_TYPE_ITEM&amp; VIEW_TYPE_LOADING。解决方案是正确覆盖getItemViewType并返回适当的视图类型。

@Override
public int getItemViewType(int position) {
    final boolean shouldShowTypeItem = <your conditional statement>;
    return shouldShowTypeItem ? VIEW_TYPE_ITEM : VIEW_TYPE_LOADING;
}