دیتا بایندینگ: اضافه کردن متغییر به xml (قسمت دوم)

در قسمت قبل مقدمه ای از کتابخانه دیتا بایندینگ را ارائه کردیم و در مثالی نشان دادیم چگونه میتوان یه سری کد های خسته کننده که همواره در کدهایمان تکرار می شوند(که به اصطلاح به آنها بویلرپلیت کد گفته می شود)، مانند findViewById را از کدهایمان حذف کنیم. در این بخش میخواهیم بویلرپلیت کدهای بیشتری را از کدهایمان حذف کنیم. فرض کنید می خواهید اطلاعات کاربر را نمایش دهید. باتوجه به مقاله قسمت قبل لیوت زیر را می سازیم.user_info.xml <?xml version=&quot1.0&quot encoding=&quotutf-8&quot?> <layout xmlns:android=&quothttp://schemas.android.com/apk/res/android&quot> <LinearLayout android:orientation=&quotvertical&quot android:layout_width=&quotmatch_parent&quot android:layout_height=&quotmatch_parent&quot> <ImageView android:id=&quot@+id/userImage&quot android:layout_width=&quotwrap_content&quot android:layout_height=&quotwrap_content&quot/> <TextView android:id=&quot@+id/userFirstName&quot android:layout_width=&quotwrap_content&quot android:layout_height=&quotwrap_content&quot/> <TextView android:id=&quot@+id/userLastName&quot android:layout_width=&quotwrap_content&quot android:layout_height=&quotwrap_content&quot/> </LinearLayout> </layout>و سپس داده ها را به این شکل به ویو میدهیمprivate void setUser(User user, ViewGroup root) { UserInfoBinding binding = UserInfoBinding.inflate(getLayoutInflater(), root, true); binding.userFirstName.setText(user.firstName); binding.userLastName.setText(user.lastName); binding.userImage.setImageBitmap(user.image); }با اینکه کدهای بالا خیلی از کدهایی که با findViewById نوشته شده اند بهتر است اما هنوز بویلرپلیت کدهایی در آن یافت می شود که میتوان آنها را از کدحذف کرد.کتابخانه دیتا بایندیگ راه حل ساده ای را در اختیارمان گذاشته است. میتوانیم در کدهای xml متغییری به نام user تعریف کنیم و در کدهای xml ویو ها را مقدار دهی کنیم. برای اینکار باید تگ data و variable را به شکل زیر به لیوت اضافه کنید.<?xml version=&quot1.0&quot encoding=&quotutf-8&quot?> <layout xmlns:android=&quothttp://schemas.android.com/apk/res/android&quot> <data> <variable name=&quotuser&quot type=&quotcom.example.myapp.model.User&quot/> </data> <LinearLayout android:orientation=&quotvertical&quot android:layout_width=&quotmatch_parent&quot android:layout_height=&quotmatch_parent&quot> <ImageView android:src=&quot@{user.image}&quot android:layout_width=&quotwrap_content&quot android:layout_height=&quotwrap_content&quot/> <TextView android:text=&quot@{user.firstName}&quot android:layout_width=&quotwrap_content&quot android:layout_height=&quotwrap_content&quot/> <TextView android:text=&quot@{user.lastName}&quot android:layout_width=&quotwrap_content&quot android:layout_height=&quotwrap_content&quot/> </LinearLayout> </layout>برای ست کردن داده های ویو باید کدهای مربوط به دیتا بایندینگ را درون “@{…}” قرار دهید. برای مثال در کد بالا داریم android:text=&quot@{user.firstName}&quotتا اینجای کار لیوت ما می داند چطور اطلاعاتی که در متغییر user هست را به ویوها دهد. اما ما هنوز متغییر user را مقدار دهی نکردیم. برای مقدار دهی user داریمprivate void setUser(User user, ViewGroup root) { UserInfoBinding binding = UserInfoBinding.inflate(getLayoutInflater(), root, true); binding.setUser(user); }به همین راحتی!!!در این بخش دیدیم که چگونه میتوان متغییر را به xml اضافه کرد و بویلرپلیت ها را کم کرد. ویژگی های جالبتر و کاربردی تری از کتابخانه دیتا بایندینگ ناگفته مانده است که در سری آموزش معماری mvvm بررسی خواهد شد. لایک و سابسکرایب فراموش نشه. اگر هم سوالی داشتید تو کامنتا برسید! ممنون از همتون