Android开发

RecyclerView遇到的一些异常问题与解决

2017-04-01  本文已影响2519人  zhaoyubetter

问题1. Inconsistency detected##

Inconsistency detected. Invalid item position 8(offset:8).state:25

清空数据时,但没有notifyAll,这个时候新增数据时,报;

问题2,条目点击 layoutPosition 返回 -1

// 条目变动时操作,
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// holder.getLayoutPosition() 在 条目变动时操作,极有有可能 return -1
onItemClickListener.onItemClick(holder.itemView, holder.getLayoutPosition(), data.get(holder.getLayoutPosition()));
}
});

这里强制 加入 try ... catch 来解决异常

问题3 not a real child

// 加载数据时,过快拉 recyclerview
java.lang.IllegalStateException: Added View has RecyclerView as parent but view is not a real child. Unfiltered index:0
解决方式:
adapter 添加数据的时候,改成:

/**
     * 添加数据
     *
     * @param items
     */
    public void addItems(List<T> items) {
        if (items != null && items.size() > 0) {
            int oldSize = data.size();
            if (oldSize > 0) {
                data.addAll(items);
                notifyItemRangeInserted(oldSize, items.size());
            } else {
                replaceData(items);
            }
        }
    }
上一篇下一篇

猜你喜欢

热点阅读