
با کمک Data Binding ما میتونیم به رابط کاربری برنامه خودمون قابلیت اتصال به عملیات های منطقی و بدیم تا بصورت خودکار اطلاعات مورد نیاز و در صفحه نمایش دهیم. با این کار دیگه نیازی به نوشتن کدهای تکراری برای آپدیت کردن UI برنامه نداریم.
از این روش در معماری MVVM اکثرا استفاده میشه و با معماری و کامپوننت هایی که گوگل معرفی کرده کاملا در تعامل هست.
برای شروع اول از همه ما باید قابلیت Data Binding و فعال کنیم برای این کار وارد گریدل میشیم و داخل تگ اندروید عبارت زیر را مینویسیم.
dataBinding { enabled = true }
حالا با هم دیگه یک کلاس میسازیم که دوتا فیلد داره و اطلاعات آبجکتی که از این کلاس میسازیم و داخل برنامه قصد داریم که نمایش بدیم.
public class User { String name; String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
وارد فایل xml لایه میشیم در این قسمت چند نکته مهم وجود داره .
اول اینکه از هر نوع لایه ای که بخواید میتونید استفاده کنید ولی حتما لایه روت یا اصلی صفحه باید تگ layout باشه.
<!-- YOUR LAYOUT HERE -->
نکته دوم ما باید داخل همین لایه متغیری بسازیم از نوع همان کلاسی که درست کردیم. برای این کار داخل تگ layout از تگ variable استفاده می کنیم.
activity_main.xml <!--?xml version="1.0" encoding="utf-8"?-->
مقدار name یک اسم دلخواه برای متغیر خودمون هست و type هم مسیر و اسم کلاس مورد نظر هست.
حالا برای این که به تکست ویو خودمون بتونیم مقدار اولیه بدیم از @{user.name} استفاده میکنیم. که به فیلد name در کلاس user در واقع اشاره میکنه با استفاده از متغیر user که در لایه تعریف کردیم.
حالا یکبار پروژه خودتون و حتما rebuild کنید تا کلاس مخصوص databinding براتون ساخته بشه.
وارد کلاس اکتیویتی بشید, در اینجا نیازی به استفاده از findViewById() دیگه نداریم.
از کلاس ActivityMainBinding استفاده میکنیم و یک آبجکت میسازیم, اسم این کلاس به اسم لایه xml شما بستگی داره چی باشه. سپس به آبجکت این کلاس یک آبجکت از کلاس User متصل میکنیم.
<style=”text-align: left;”=”” p=””>
public class MainActivity extends AppCompatActivity { private User user; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); user = new User(); user.setName("Ravi Tamada"); user.setEmail("ravi@androidhive.info"); binding.setUser(user); } }
</style=”text-align:>
مجید
شهریور 21, 1398 - 2:42 ب.ظمن databinding رو true میکنم و کتابخونه لاطم رو اضافه کنم و قبل نوشتن هرکدی یک بیلد میگیرم خطا میگیره