这是可以显示错误的方法。
错误:
引起:
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>
答案 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;
}