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