با خودمون که تعارف نداریم . برنامه نویس ها ادم های تنبلی هستند. نه به این معنا که حوصله ندارن اشغال هارو ببرن دم در(که این طور هم هست) بلکه به این معنا که دوست ندارن زیاد از کد های تکراری ایستفاده کنند. این یکی از اصول برنامه نویسیه.
در اندروید هر وقت میخواهیم از یک view استفاده کنیم مجبوریم اول با متدfindViewById اون رو پیدا کنیم. اما گوگل توی کنفرانس I/O اخیر ویژگی رو معرفی کرد که مارو از شر این ها راحت میکنه. اسمش هست : view binding. این رو با bata binding اشتباه نگیرید . میشه گفت view binding اومده تا استفاده از data binding رو برای استفاده های خاص اسون کنه. کاربرد اصلیش بی نیاز کردن ما از findViewById است.
البته تا اونجا که من میدونم در کاتلین هم ویژگی های مشابهی وجود داره که جایگزین بهتری برایfindViewById است ولی این موضوع بحث ما نیست.
برای اینکه از این ویژگی استفاده کنید باید اندروید استودیو ۳٫۶ به بالا رو نصب کنید و حتما gradle رو اپدیت کنید.
اول برید توی فایل gradle.build مربوط به ماژول app و این خط هارو اضافه کنید.
وقتی پروژه سینک شد باید به ازای هر لایه(layout), یک کلاس ایجاد شده باشد. اسم این کلاس از اسم لایه که به هم چسبیده شده(با قاعده camel case) و کلمه Binding در انتها اون تشکیل شده. به این کلاس binding class گفته میشه.
فرض کنید یک لایه به اسم result_profile داریم:
اسم binding class اون لایه میشه ResultProfileBinding که دو تا فیلد داره: یکTextView به اسم name و یک Button به اسم button . و ImageView چون آی دی نداره پس فیلدی هم ازش نیست.
در این کلاس از هر view ای که آی دی داشته باشد یک ارجاع وجود داره. انگار اندروید همه view ها رو برامون پیدا کرده و ما فقط باید ازش استفاده کنیم. اما استفاده از اون هم قوانین خودشو داره.
در ضمن در این کلاس یک متد استاتیک به نام getRoot هم وجود داره که root element( یا rootView) اون لایه رو برمیگردونه( تگی که بقیه تگ ها در اون قرار میگیره . در مثال بالا LinearLayout).
برای اینکه یک شی از binding class ایجاد کنیم و از اون توی اکتیویتی استفاده کنیم مراحل زیر را دنبال کنید.
الان میتونید از این شی در اکتیویتی استفاده کنید.
برای اینکه یک شی از binding class ایجاد کنیم و از اون توی فرگمنت استفاده کنیم مراحل زیر را دنبال کنید.
این بود مقدمات view binding . امیدوارم مفید واقع بشه. سعی کردم کامل باشه. خیلی جاها مجبور شدم از کلمات انگلیسی استفاده کنم چون نتونستم معادل مناسبی براش پیدا کنم.
جدیدا توی هر پستی که میزارم یه تبلیغی از پروژه ای که تازه شروع کردم میکنم:)
تصمیم گرفتیم که کتاب clean code رو خودمون ترجمه کنیم و برای استفاده عموم منتشر کنیم. فصل اول کتاب ترجمه شده و میتونید اونو توی گیت هاب ما ببینید و اگر دوست داشتید کمک کنید پست زیر برای شما مفید خواهد بود. لازم نیست کل وقت تونو بذارید . یک صفحه هم خوبه.