计算realPosition的问题
int realPosition= position - mPositions.get(viewType);
如果position为0, mPositions根据当前类型获取的集合的长度, 它们一减,肯定是一个负数啊,为什么在下面List直接使用没有报索引越界,
int realPosition= position - mPositions.get(viewType);
如果position为0, mPositions根据当前类型获取的集合的长度, 它们一减,肯定是一个负数啊,为什么在下面List直接使用没有报索引越界,
2016-11-09
有了个可以兼容数据长度的方法
private List<Object> allList = new ArrayList<>();
在构造方法中或者在add方法中
allList.addAll(dataListOne);
allList.addAll(dataListTwo);
allList.addAll(dataListThree);
在onBindViewHolder方法中
int realPosition = 0;
Object object = allList.get(position);
if(object instanceof DataModelOne){
for (int i=0;i<dataListOne.size();i++){
if(object == dataListOne.get(i)){
realPosition = i;
}
}
}else if(object instanceof DataModelTwo){
for (int i=0;i<dataListTwo.size();i++){
if(object == dataListTwo.get(i)){
realPosition = i;
}
}
}else if(object instanceof DataModelThree){
for (int i=0;i<dataListThree.size();i++){
if(object == dataListThree.get(i)){
realPosition = i;
}
}
}
这样就能拿到realPosition的位置了
举报