Recyclerview - OnCreateViewholder - 在某些情况下如何返回“null”
Posted
技术标签:
【中文标题】Recyclerview - OnCreateViewholder - 在某些情况下如何返回“null”【英文标题】:Recyclerview - OnCreateViewholder - How to return "null" if some condition 【发布时间】:2019-12-27 01:50:54 【问题描述】:我正在努力处理一些代码,我想做的是在某些情况下膨胀视图,在其他情况下膨胀另一个不同的视图,但在其他情况下忽略寄存器并且不膨胀视图。所以我写了这个。如果 i == 0,我将返回一个视图,如果 i == 1,我将返回另一个视图,如果 i == 3,我什么也不想做。在 BindViewHolder 方法上也是如此,其中案例 3 什么都不做。谢谢!
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)
if (i == 1)
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
View celda = layoutInflater.inflate(R.layout.mag_slidingup_panelcontent_item_view, viewGroup, false);
productViewHolder productViewHolder = new productViewHolder(celda);
return productViewHolder;
else if (i == 0)
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
View celda = layoutInflater.inflate(R.layout.cell_bottom_products_parent, viewGroup, false);
productViewHolderParent productViewHolderParent = new productViewHolderParent(celda);
return productViewHolderParent;
else
return null;
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i)
switch (viewHolder.getItemViewType())
case 0:
productViewHolderParent productViewHolderParent = (productViewHolderParent) viewHolder;
productViewHolderParent.update(magProducts.get(i));
break;
case 1:
productViewHolder productViewHolder = (productViewHolder) viewHolder;
productViewHolder.update(magProducts.get(i));
break;
case 3:
break;
错误:java.lang.NullPointerException:尝试从空对象引用上的“android.view.View android.support.v7.widget.RecyclerView$ViewHolder.itemView”字段读取
【问题讨论】:
你不能在那里返回 null。你到底想达到什么目的? 我有一个带有“产品”的数组。通过某些功能,我确定该产品是(每个)父母还是孩子还是单独的。因此,如果产品是“父级”(i==0),我会夸大该产品布局。如果产品是“子”(i==1),我会夸大与“父”不同的产品布局。如果产品是“单独的”(i == 3),我不想夸大视图。我想忽略数组的那个乘积。 那么,那些“单独”的产品不应该出现在您提供给Adapter
的列表中。
请从产品列表中过滤掉“单独”的产品,或者您可以定义一个空布局并对其进行膨胀,但不推荐,第一种方法更好。
好吧。我会试试这个。我刚刚用一个空视图解决了这个问题,但感觉很脏。多谢你们!很快就会更新
【参考方案1】:
终于解决了。
在 cmets 中,他们向我解释说我不能返回 null,我应该在将列表传递给适配器之前对其进行过滤。在我的特殊情况下,我需要我想隐藏的数据,所以我按照 CodeRanger 所说的做了。我膨胀了一个空视图。
谢谢大家!
【讨论】:
以上是关于Recyclerview - OnCreateViewholder - 在某些情况下如何返回“null”的主要内容,如果未能解决你的问题,请参考以下文章