我正在从Recylerview中删除项目。我在ViewHolder中实现了一个View.OnClickListener。然后在视图上使用setOnClickListener(),我将从onClick方法中删除行。
当我第一次删除项目时单击视图时,在第二次单击时我得到一个越界异常,因为getAdapterPosition()方法返回-1。
我的实施:
public ItemViewHolder(View itemView) {
imageView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Log.v("clicker", "position is " + getAdapterPosition()); //returns correct index on first deletion and -1 on the second
mItems.remove(getAdapterPosition);
notifyItemRemoved(getAdapterPosition);
}
注意:
奇怪的是,使用已弃用的getPosition()将返回不正确的索引位置,但它会删除Recylcerview中的每个项目,直到最后一个项目被保留,其中当单击最后一个项目时,它会因为out而崩溃边界索引问题。
告诉我你是否需要更多代码。
提前致谢。