تغییر هر آیتم و محتویات درون آیتم در ریسایکلر ویو
دوشنبه, ۲۰ مرداد ۱۳۹۹، ۰۹:۴۴ ب.ظ
توی ریسایکلر ویو متد onCreateViewHolder (همون متد اول) که کار inflate رو انجام میده، تعداد فراخونیش محدود هست. متدی که به ازای هر آیتم کال میشه، متد onBindViewHolder هست. این یکی از ویژگی های مثبت ریسایکلر ویو به شمار میاد، چون فرآیند inflate کردن پر هزینه هست.
تغییر در آیتم ریسایکلر ویو (تغییر در لیست ویو):
مثلا حذف یک مورد از لیست. بعد از این کار باید متد
notifyDataSetChanged()
فراخونی بشه. این متد، onCreateViewHolder و onBindViewHolder رو صدا میکنه.
اگر یک ویو که داخل آیتم ریسایکلر ویو هست ادیت شد، بعدش متد
notifyItemChanged(holder.getLayoutPosition())
رو کال میکنیم. این متد، onCreateViewHolder رو کال نمیکنه و فقط onBindViewHolder رو صدا میزنه. بنابراین نسبت به قبلی فرآیند کم هزینه تری هست.
نتیجه: در صورت "تغییر سایز" لیست ورودی از متد اول و در صورت تغییر محتوا از متد دوم استفاده میکنیم.
۹۹/۰۵/۲۰
خیلی عالی بود