我有一个RecyclerView适配器,它应该根据返回的内容膨胀4种不同的布局。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);
}
记录时,只有 0、1 和 3 会在 内部返回,但不会返回 2。getItemViewType(i)onCreateViewHolder
但奇怪的是,在 内部记录该日志会返回从 0 到 3 的所有视图类型。为什么会这样呢?onBindViewHolder
编辑
RecyclerView显示一个水平的卡片列表(约20个),而除最后一个卡片(空白)之外的所有卡片都使用相同的布局,因此在此特定列表案例中仅使用2种视图类型,我们现在可以忽略其他2种类型。这里最后一张牌没有充气,因此从未在.我怀疑虽然前许多卡使用相同的布局进行膨胀,但布局不会再次创建,因此它假设最后一张卡使用相同的布局。onCreateViewHolder
眼眸繁星
相关分类