1.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 报错原因:
recyclerview下,请求完新的数据后没有及时更新数据源,或者是修改了数据源没有及时刷新,比如移除了一条,notifyItemRemoved,
或者是两个具有一样的recyclerview的tablayout下切换时候,请求数据频繁加载和刷新两个layout下的列表
复制代码
解决方法:
recyclerview.notifyDataSetChanged();
或者直接clear后再添加数据到数组
复制代码
2.Recyclerview的缓存机制:
public View getViewForPosition(int position) {
return getViewForPosition(position, false);
}
View getViewForPosition(int position, boolean dryRun) {
return tryGetViewHolderForPositionByDeadline(position, dryRun, FOREVER_NS).itemView;
}
复制代码
这个方法是复用机制的入口,也就是 Recycler 开放给外部使用复用机制的api,外部调用这个方法就可以返回想要的 View,而至于这个 View 是复用而来的,还是重新创建得来的,就都由 Recycler 内部实现,对外隐藏。