android - Recyclerview - OnCreateViewholder - 在某些情况下如何返回“null”
问题描述
我正在努力处理一些代码,我想做的是在某些情况下膨胀视图,在其他情况下膨胀另一个不同的视图,但在其他情况下忽略寄存器并且不膨胀视图。所以我写了这个。如果 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,我应该在将列表传递给适配器之前对其进行过滤。在我的特殊情况下,我需要我想隐藏的数据,所以我按照 CodeRanger 所说的做了。我夸大了一个空的视图。
谢谢大家!
推荐阅读
- python - 以最低要求导出 Conda 环境
- c++ - 使用 getline() 时 while 和 if 的区别
- c - 在 c 中,当我在条件语句中分配一个字符串时,它有错误
- google-forms - 当我尝试打开受限的 Google 表单时如何更改帐户?
- r - 尝试在 R 中进行左连接合并,但想要选择特定的列。接收错误信息
- python - 如何在python中使用pandas将数据设置为csv文件
- swiftui - 如何获取 SwiftUI View 的当前颜色?
- opencart - 电子邮件订单 opencart 中的库存状态
- python - Python pandas在另一列的元素列表中查找一列的元素
- angular - 如何在 spec.test 文件中定义“component.QRcode”