در ادامه فیلم قسمت دوم، از دیتابایندینگ استفاده خواهیم کرد!
استفاده از DataBinding:
برای استفاده از DataBinding، ابتدا پروژه را make کنید تا برای ما کلاس ActivityMainBinding تشکیل شود.
Make project:
Build>Make project
بعد از انجام این کار، به کلاس MainActivity.kt رجوع کنید و متغیر binding را تعریف کنید:
privatelateinitvar binding: ActivityMainBinding
اما همانطور که مشاهده می کنید، کلاس ActivityMainBinding ناشناخته می باشد! چرا؟؟؟ به این دلیل که شما باید در فایل activity_main.xml نیز تغییراتی اعمال کنید! پس به فایل مذکور رجوع کنید:
حالا دوباره پروژه را Make کنید؛ به کلاس MainActivity.kt برگردید و دوباره متغیر binding را تعریف کنید و همانطور که خواهید دید، کلاس ActivityMainBinding دیگر ناشناخته نیست:
اگر توجه کرده باشید ما شئ helloWroldTextView را اصلأ تعریف نکرده بودیم! پس از کجا همچین متغییری وجود داشت؟ جواب ساده است! از کلاس ActivityMainBinding! هر عنصری از UI که داخل هر اکتیویتی ساخته می شود، در کلاس dataBinding مربوطه نیز تعریف خواهد شد بدون اینکه از متود درد آور findViewById استفاده شود!
مثال پیشرفته:
یک کلاس کاتلین به نام User بسازید به این صورت:
dataclassUser(val name: String)
کلاس User حاوی مقداری به نام name می باشد و حالا قصد داریم که از این دیتاکلاس خود در برنامه استفاده کنیم.
ابتدا در activity_main.xml، یک تگ دیتا با نوع User تشکلیل بدهید به این صورت:
و حالا می خواهیم از مقدار name در کلاس User برای مقدار Text شئ helloWorldTextView استفاده کنیم! در helloWorldTextView مقدار Text را اینگونه تنظیم کنید:
Handler().postDelayed({val user =User("Moein") binding.user = user binding.executePendingBindings() },3000)
در اینجا، یک کلاس User ساخته شد و به مقدار user در binding نسبت داده شد اما برای ثبت تغییرات اعمال شده در binding، با دستور زیر تغییرات را اعمال خواهیم کرد: