我有一个数组列表,并使用 ImageButton 从列表中删除项目。如果我从同一位置删除 3 个项目,应用程序将崩溃并出现 IndexOutOfBoundsException。我不知道如何在删除项目之前的项目后更改项目的数组位置。
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
ExRow expense = expenseList.get(position);
holder.title.setText(expense.getTitle());
holder.amount.setText(expense.getAmount());
mRemoveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// Remove the item on remove/button click
expenseList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, expenseList.size());
}
});
}
最佳答案
对此有许多可能的解决方案。
这对我来说是理想的
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
ExRow expense = expenseList.get(holder.getAdapterPosition());
holder.title.setText(expense.getTitle());
holder.amount.setText(expense.getAmount());
mRemoveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// Remove the item on remove/button click
int adapterPosition = holder.getAdapterPosition();
expenseList.remove(adapterPosition);
notifyItemRemoved(adapterPosition);
notifyDatasetChanged();
}
});
}
关于java.lang.IndexOutOfBoundsException : Invalid index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939840/