0
私がクリックしたときにしかし、それは一度削除し、私が得る項目を削除しようとしていますエラー:RecyclerViewはクリックでアイテムを削除すること
ERROR
Process: com.example.cardgame, PID: 3345
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 10(offset:10).state:11
CODE
public class HandViewAdapter extends RecyclerView.Adapter<HandViewAdapter.ViewHolder>{
private ArrayList<Card> cards;
private Context context;
public HandViewAdapter(ArrayList<Card> cards, Context context) {
this.cards = cards;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View cardView = inflater.inflate(R.layout.card, parent, false);
return new ViewHolder(cardView);
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
Card card = this.cards.get(position);
if (position == 0) {
card.setStatus(CardStatus.down);
} else {
card.setStatus(CardStatus.up);
}
// Here i put the listener since i have tried other methods but i have no success to run them
holder.cardLayoutView.getCardView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
remove(position);
}
});
}
@Override
public int getItemCount() {
return this.cards.size();
}
public Card remove(int index) {
cards.remove(index);
notifyItemChanged(index);
notifyItemRangeChanged(index, cards.size());
return null;
}
public static class ViewHolder extends RecyclerView.ViewHolder implements CardBehavior {
public CardLayoutView cardLayoutView;
public ViewHolder(View view) {
super(view);
this.cardLayoutView = new CardLayoutView(view);
}
@Override
public void faceDown() {
this.cardLayoutView.faceDown();
}
@Override
public void faceUp(Card card, Context context) {
this.cardLayoutView.faceUp(card, context);
}
}
}
私は最初の項目を削除した後に位置を更新しないことを理解しています。それはupda彼らは正しい?しかし、私はそれを修正することはできますか?私はどんな助けにも感謝します、ありがとう!
おかげで、それは、それらの間の違いは何であるかそう働いていましたか? – kobbycoder
@kobbycoder更新の回答 –
ありがとう、私はあなたの助けに感謝します。 – kobbycoder