Java 在RecyclerView中切换项目视图类型
我的逻辑似乎不错,但就是不起作用。 我有两个视图A和B,我只想在A显示5次后再显示B一次。 在我的适配器中Java 在RecyclerView中切换项目视图类型,java,android,adapter,android-recyclerview,Java,Android,Adapter,Android Recyclerview,我的逻辑似乎不错,但就是不起作用。 我有两个视图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; } }
int itemCount = 0;
@Override
public int getItemViewType(int pos){
itemCount++;
if(itemCount == 4){
itemCount = 0;
return VIEW_B;
}else{
return VIEW_A;
}
}
我好像不知道怎么了。任何帮助都足够。这不起作用,因为您要将计数添加到全局变量中,并且不能保证视图类型是连续的。改用
位置%5==0
对于B,否则A问题在于
itemCount
变量;你应该把它扔掉。Android系统可以(也将)为相同的位置重复调用getItemViewType()
,并使用不连续的位置参数调用它。因此,您必须能够仅基于方法的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”视图开始。我不完全理解你的上一句话“因为你说如果你使用if(pos%5==0)
你会看到B a a a a a
。但是,您说“我只想在A显示5次后再显示B一次”,因此我假设您希望看到A A A。这意味着您必须使用if((pos+1)%6==0){
来代替。是的,现在完全有意义了。因为0%5=0,因此条件将保持为真并返回B。