getItemViewType
返回。
触发视图时应返回每个视图类型,但问题是其中一个类型不返回onCreateViewHolder,而只返回onBindViewHolder,从而阻止创建ViewHolder。我也向你保证
getItemCount
只返回正确大小的数据,所以这不应该是问题所在。
@NonNull
@Override
public HorizontalViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
Log.d(SLIDER_TAG, "onCreateViewHolder: " + getItemViewType(i));
View cardView = LayoutInflater.from(parent.getContext()).inflate(
getItemViewType(i) == 0 ? R.layout.item_category_slider_viewed
: getItemViewType(i) == 1 ? R.layout.item_category_slider_added
: getItemViewType(i) == 2 ? R.layout.item_category_slider_browse_all
: R.layout.item_category_slider_regular
, parent, false);
return new HorizontalViewHolder(cardView, context);
}
当记录
getItemViewType(i)
只有0、1和3在
onCreateViewHolder
但不是2。
但奇怪的是,把它记录在
onBindViewHolder
编辑
RecyclerView显示卡的水平列表(大约20个),而除最后一个卡(空白)外的所有卡都使用相同的布局,因此在这种特定的列表情况下仅使用两种视图类型,我们现在可以忽略其他两种类型。这里最后一张卡没有充气,因此在
onCreateViewHolder