RecyclerView和IndexOutOfBoundsException:索引号无效,大小为#

时间:2016-04-19 23:00:13

标签: android android-recyclerview indexoutofboundsexception

我有一个简单的RecyclerView,我想在onClick上删除这些项目。我一直遇到崩溃,这取决于我点击列表中的某些项目时出现上述错误。如果你遇到类似的问题,我就是这样解决的:

2 个答案:

答案 0 :(得分:5)

public void onBindViewHolder(final CardViewHolder holder, final int position)

在这里使用position对于某些事情很有用,但如果我在从列表中删除项目时使用它,则会导致崩溃,而是使用:

holder.getAdapterPosition();

立即解决了我的问题。

答案 1 :(得分:-1)

创建一个这样的类:

public class RecyclerViewNoBugLinearLayoutManager extends LinearLayoutManager {
    public RecyclerViewNoBugLinearLayoutManager(Context context) {
        super( context );
    }

    public RecyclerViewNoBugLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
        super( context, orientation, reverseLayout );
    }

    public RecyclerViewNoBugLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super( context, attrs, defStyleAttr, defStyleRes );
    }

    @Override
    public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
        try {
        //try catch一下
            super.onLayoutChildren( recycler, state );
        } catch (IndexOutOfBoundsException e) {
            e.printStackTrace();
        }

    }
}

当您启动RecylerView时添加以下内容:

mRecyclerView = (RecyclerView)findViewById(R.id.list_search);
mRecyclerView.setLayoutManager(new FixRecyclerViewManager(mContext));