列表前面的数据加载正常,划着划着就发觉数据不对了,再往回划,数据就完全错乱了,检查了adapter中有if的地方也都使用了else恢复布局状态,还出现数据错乱的问题,一时有点懵逼,最后打算在onBindViewHolder()方法中大日志看下position的变化情况,意外发现划动过程中position不连续,后来百度了下,才知道onBindViewholder()方法只有在getItemViewType()返回值发生变化时才会调用,所以得重写这个方法。
如下:
```
@Override
public int getItemViewType(int position) {
return position;
}
```
**这样就解决了数据错乱的问题。但也引发了一个思考,我的列表布局都是一种类型的,只是每个item有个FlexBoxLaout流式布局,所以每个item高度不一样,难道说item的尺寸不一样也会导致getItemViewType()返回不一样的值么?印象中以前列表中item尺寸、布局一毛一样时好像没重写上面那个方法也没有出现数据重复的问题。特此记录一下,后面验证下这个思考吧。**
网友评论