امروزه روز به روز استفاده از اپلیکیشن های اندرویدی بیشتر و بیشتر میشه. و خیلی از جوان ها و دوست داران تکنولوژی دارن به سمت برنامه نویسی اندروید میان و آینده ی شغلی خودشون رو در این حوزه جست و جو میکنن. از این رو خیلی مهمه که این برنامه نویس ها راه درست استفاده از ابزارها رو یادبگیرن. متاسفانه در این حوزه هنوز منابع خیلی معتبری وجود نداره و من وظیفه ی خودم دونستم که دانشی که در این چند سال به عنوان برنامه نویس اندروید رو یاد گرفتم با بقیه به اشتراک بزارم و امیدوارم که این مطلب برای دوست داران این حوزه مفید باشه و بتونن ازش استفاده کنن و کدهاشون رو مرتب تر و تمیزتر بنویسن.
یکی از قسمت هایی که در خیلی از اپ ها استفاده میشه لیست ها هستن. به طوری که شما به سختی میتونید برنامه ای رو پیدا کنید که در اون از لیست ها استفاده نشده باشه.
به دلیل اینکه اندازه ی این لیست ها مشخص نیست و کار به صرفه ای(از نظر زمان) هم نیست که شما بیایید و دونه دونه آیتم های داخل لیستتون رو به لایه تون اضافه کنید. (اگر لایه بندیتون رو با کدهای جاوا یا کاتلین زده باشید میتونید این کار رو هم بکنید.) چون احتمال اینکه برنامتون لگ بندازه خیلی خیلی زیاد میشه.
به همین دلیل خود گوگل اومد و RecyclerView معرفی کرد که مشکلات بالا رو با یه سری روش ها به درستی حل میکنه و خیلی امکانات دیگه ای هم در اختیار کاربران قرار میده ولی اگه به درستی ازش استفاده نکنید امکان داره به جای اینکه کدهاتون مرتب تر و تمیز تر باشه کثیف تر باشه و حتی یه جاهایی یه رفتارهای عجیب و غریبی هم ازش ببینید.
حالا میخواهیم در مورد یه سری از این نکاتی که میتونه کمک زیادی به ما کنه برای کار کردن با این View توضیحات مختصری رو بگیم.
دقت کنید برای خوندن این مقاله شما باید با نحوه ی کار کردن با RecyclerView آشنا باشید و حداقل یه لیست رو با کمک اون نمایش داده باشید.
برای استفاده از RecyclerView ما به adapter نیاز داریم که به ازای هر داده ای که در لیستمون هست یک View درست کنه و داده ها رو به اون بایند کنه. خب حالا اگه بخواییم متن یکی از این ویو ها رو تغییر بدیم خیلی راحت میتونیم با استفاده از شی که از اون view گرفتیم این رو تغییر بدیم ولی این کار کاملا اشتباه است و شما باید از انجام دادن این کار به شدت پرهیز کنید. چون امکان داره یه سری رفتارهای عجیب رو ببینید که دلیلش به همین مورد برمیگرده. در ضمن این کار باعث کثیف شدن کدهاتون میشه و درک اونها رو برای بقیه ی برنامه نویس ها سخت میکنه.
ذات استفاده از adapter اینه که بیاد و محتوی لیست شما رو به View تون انتقال بده. پس درست نیست که شما بیایید و تغییراتی رو که میخواهید روی اون View بدید رو مستقیم اعمال کنید. باید حتما این تغییرات رو اول از همه روی اون آیتمی که داخل لیست دارید اعمال کنید و تنها کاری که باید adapter انجام بده اینه که بیاد و View آیتم مورد نظر رو بروزرسانی کنه
حتما باید توی کدهاتون یه حالت پیش فرض داشته باشید برای نمایش دادن آیتم هاتون که از اون استفاده بشه. به حالت های پیش فرضی که داخل xml میتونید ایجاد کنید بسنده نکنید و فراموش نکنید حالت پیش فرض رو همیشه در نظر بگیرید.
با در نظر نگرفتن این مورد اگه یکی از view هاتون یه تغییری داشته باشه در هنگام اسکرول کردن میبینید که تغییراتی که در اون ویو داده شده در بقیه ی آیتم ها با یه فاصله ی مشخصی اعمال شده. که با دادن حالت پیش فرض میتونید این مشکل رو حل کنید.
اگه مقداری که برای View در نظر میگیرید داخل ساختار شرطیه باید حتما از else هم استفاده کنید چون دقیقا مشکلاتی که برای قسمت ۲ رو گفتیم رو هم میتونه اینجا به همراه داشته باشه و در هنگام اسکرول کردن میبینید که رفتار درستی نداره.
امیدوارم این نکات مفید بوده باشه و بتونید با استفاده از اونها کدهاتون رو مرتب تر، راحت تر، بهینه تر و با خیال راحت تری بنویسید. یه نکته هم به نظرم میتونه در کل مفید باشه اونم اینه که بدونید برنامه نویسی اصلا سخت نیست و اگه میبینید کاری که میکنید داره خیلی سخت میشه بدونید که یه قسمتش رو حتما درست انجام ندادید.
خوشحال میشم نظراتتون رو در زیر این پست بزارید.