私はRecyclerView.Adapterを使用して、異なるメッセージを運ぶ複数のViewHolderを表示しています。これはonBindViewHolder関数です:その後、OnBindViewHolderの下のonClickListener関数は奇妙な結果を返します
@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");
}
});
}
起こって、私は第一ViewHolder上のsubmitButtonを押すと、そのメッセージは、「更新されたメッセージ」として、その上に表示されていることである奇妙なことが、私は他のViewHoldersまでスクロールし、 5番目のViewHolderには「更新されたメッセージ」も含まれており、9th、13thなどにはすでにメッセージが表示されています。同様に、2番目のViewHolderでsubmitButtonを押すと、メッセージは2番目、6番目、10番目、14番目などに表示されます。
理想的には、1番目のViewHolderでsubmitButtonを押すと、最初のViewHolderにのみメッセージを表示し、他のViewHolderでは表示しないようにしてください。
私はonClickの機能のインナークラス内でそれを呼び出すことができるように最終としてパラメータViewHolderホルダーを入れていました。
私はなぜこれが起こっていると私はこれまでの機能onBindViewHolder使用していないが、私はそれが引数ViewHolderホルダーが「最後の」であることに関連したものだと感じ見当がつかない。
とった!だから、私はちょうどいくつかの位置、ボタンがクリックされた場合、それはちょうどそのViewHolderのonCreateを介してメッセージを表示するかどうかを確認することができます。 ViewHoldersの再利用について知らなかった。ありがとう! –