【发布时间】: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的列表中。 -
请从产品列表中过滤掉“单独”的产品,或者您可以定义一个空布局并对其进行膨胀,但不推荐,第一种方法更好。
-
好吧。我会试试这个。我刚刚用一个空视图解决了这个问题,但感觉很脏。多谢你们!很快就会更新
标签: android listview android-recyclerview