の特定のアイテムを更新しようとしていますRecyclerView
。
話:ユーザーがアイテムをクリックするたびに、それが表示されます。ユーザーはOKボタンをクリックしてテキストを入力できます。このテキストをこのアイテムに表示し、 XMLとアダプタで宣言されAlertDialog
た非表示にしたいです。ImageView
ViewHolder
AlertDialog
アイテムを更新するために、Positive Buttonで次の関数を使用しました。
private void updateListItem(int position) {
View view = layoutManager.findViewByPosition(position);
ImageView medicineSelected = (ImageView) view.findViewById(R.id.medicine_selected);
medicineSelected.setVisibility(View.VISIBLE);
TextView orderQuantity = (TextView) view.findViewById(R.id.order_quantity);
orderQuantity.setVisibility(View.VISIBLE);
orderQuantity.setText(quantity + " packet added!");
medicinesArrayAdapter.notifyItemChanged(position);
}
しかし、このコードは渡された位置の itemView を変更するだけでなく、他の itemView もいくつか変更します。
特定の itemView をクリックして正しく変更するにはどうすればよいでしょうか?
ベストアンサー1
あなたはnotifyItemChanged(int position)
RecyclerView.Adapter クラスのメソッド。ドキュメントより:
登録されているオブザーバーに、位置にあるアイテムが変更されたことを通知します。notifyItemChanged(position, null); を呼び出すのと同じです。
これは項目変更イベントであり、構造変更イベントではありません。位置のデータの反映が古く、更新する必要があることを示しています。位置の項目は同じ ID を保持します。
あなたはすでにその役職に就いているので、それはあなたにとってうまくいくはずです。