Я использую RecyclerView.Adapter для отображения нескольких ViewHolder с различными сообщениями. Это функция onBindViewHolder:
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.messageTextView.setText("Updated message");
}
});
}
Странная вещь, которая происходит, заключается в том, что если я нажму кнопку SubmitButton на 1-ом ViewHolder, тогда сообщение будет отображаться на нем как «Обновленное сообщение», но затем, когда я прокручу вниз до других ViewHolders, пятый ViewHolder содержит «Обновленное сообщение», а также 9-е , 13-й и т. Д. Уже имеют отображаемое на них сообщение. Аналогично, если я нажму кнопку submitButton на втором ViewHolder, сообщение будет отображаться на 2, 6, 10, 14 и так далее.
В идеале, он должен работать, как если бы я нажимал submitButton на 1-ом ViewHolder, сообщение должно отображаться только на 1-ом ViewHolder, а не на других.
Мне пришлось поставить параметр ViewHolder в качестве окончательного, чтобы я мог вызвать его во внутреннем классе функции onClick.
Я понятия не имею, почему это происходит, и я никогда не использовал функции onBindViewHolder раньше, но я чувствую, что это связано с тем, что аргумент держателя ViewHolder является «окончательным» .
java,android,android-studio,android-recyclerview,