‫در ریسایکلر ویو متد onCreateViewHolder چند بار صدا زده می شود؟

به ازای تمام ایتم ها این متد یک بار صدا زده میشود. و اگر ویوهولدر یک ایتم از حافظه بیرون انداخته شود باز هم به هنگام نشان دادن این ایتم این متد صدا زده میشود

فکرکنم @moosamir68 دقت نکردی که سوال onCreateViewHolder رو گفته و onBind رو گفتی.

درواقع onCreateViewHolder به اندازه‌ای صدا زده میشه که View Holderها کل اسکرین رو بگیرن. (البته دقیقترش اینجوریه یدونه یا دوتا بیشتر صدا زده میشه) در ادامه دیگه فقط عملیات bind کردن روی اینها انجام میشه و createیی انجام نمیشه

 @abbas-oveissi درسته. بصورت مختصر بگم: این رو layoutManager هندل میکنه و تعدادش در حالتی که یک view type داشته باشیم و مقدار offscreen دیفالت باشه (دیفالتش ۲ هست) برابر میشه با تعداد ویو ها در صفحه + ۲.  برای مثال در صفحه دو آیتم جا میشه، ۲آیتم هم دیفالت offscreen هست. وقتی بار اول لود میشه متد onCreateViewHolder برای دو آیتم توی صفحه صدا زده میشه. وقتی اسکرول میکنیم آیتم سوم رو میسازه و onCreateViewHolder صدا زده میشه. آیتم اول از صفحه خارج میشه و در کش قرار میگیره. مجدد اسکرول میکنیم آیتم چهارم ساخته میشه و متد onCreateViewHolder صدا زده میشه و آیتم دوم از صفحه خارج میشه و مجدد در کش قرار میگیره. اگه اینبار باز اسکرول کنیم آیتم سوم میخواد بره تو کش ولی نمیتونه میبینه کش پر شده، چون مقدار offscreen برابر با ۲ هست دیگه، پس آیتم اول رو میفرسته تو pool، بعد آیتم پنجم وقتی که میخواد وارد صفحه شه از تو pool استفاده میکنه، اینجا چون از آیتم توی pool استفاده کرده پس متد onCreateViewHolder صدا زده نمیشه و فقط onBindViewHolder صدا زده میشه. اینجا یک نکته مهم هست که وقتی view از pool میخواد استفاده بشه اگه viewType ها یکی نباشه (یعنی چند viewType استفاده کرده باشیم) اول بررسی میکنه ببینه آیتم جدید که میخواد بیاد تو صفحه و از pool میخواد آیتم بگیره، viewType ها یکی هستن یا نه. اگه نبودن متد onCreateViewHolder مجدد صدا زده میشه.  

فکرکنم @moosamir68 دقت نکردی که سوال onCreateViewHolder رو گفته و onBind رو گفتی.

درواقع onCreateViewHolder به اندازه‌ای صدا زده میشه که View Holderها کل اسکرین رو بگیرن. (البته دقیقترش اینجوریه یدونه یا دوتا بیشتر صدا زده میشه) در ادامه دیگه فقط عملیات bind کردن روی اینها انجام میشه و createیی انجام نمیشه

اشتباه از من بود :)