在 RecyclerView 中切换项目视图类型

Switching item viewtypes in RecyclerView

我的逻辑好像没问题,但就是行不通。 我有 2 个视图 A 和 B,我只想在 A 显示 5 次后显示 B 一次。 在我的适配器中

int itemCount = 0;

@Override
public int getItemViewType(int pos){
    itemCount++;
    if(itemCount == 4){
        itemCount = 0;
        return VIEW_B;
    }else{
        return VIEW_A;
    }
}

我好像不知道怎么回事。任何帮助就足够了。

这不起作用,因为您将计数添加到全局变量,并且不能保证视图类型是连续的。而是使用 position % 5 == 0 对于 B 否则 A

问题是你的itemCount变量;你应该摆脱它。 Android 系统可以(并且将会)为相同的位置重复调用 getItemViewType() 并将使用非连续的位置参数调用它。因此,您必须能够 return 一个仅基于方法的 pos 参数的值。

试试这个:

@Override
public int getItemViewType(int pos){
    if((pos + 1) % 6 == 0){
        return VIEW_B;
    }else{
        return VIEW_A;
    }
}

请注意,if 子句不仅仅是 if (pos % 5 == 0),因为您说过不想从 "type a" 视图开始。