Sie müssen zuerst verstehen, wie RecyclerView funktioniert.
Während Sie durch die Zellen blättern, werden die Ansichten, die den Bildschirm verlassen, RECYCLED, und sie werden anschließend wiederverwendet, um die eingehenden Ansichten anzuzeigen. Daher der Name RecyclerView. Auf diese Weise werden Ansichten immer wiederverwendet und wiederverwendet, wodurch Speicher gespart wird.
Was Sie tun müssen, ist so etwas wie dieses:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//mList and mSelectedObjects are array lists
View yourView = holder.itemView.findViewById(R.id.your_view);
Object object = mList.get(position);
yourView.setTag(object);
yourView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Object object = (Object) v.getTag();
if (mSelectedObjects.contains(object)) {
mSelectedObjects.remove(object);
v.setBackground(null);
} else {
mSelectedObjects.add(object);
v.setBackgroundColor(Color.GRAY);
}
}
});
}
Dank Jagoan Neon. genau weiß ich nicht, wie ich meinen Code anpassen soll. Wie auch immer, ich danke dir wirklich. –