دوستان عزیز سلام
به جلسه دوم ViewBinding خوش آمدید
پیشنیاز
ابتدا از این جلسه آموزشی کامل قضیه ViewBinding رو درک کنید
و بعد ادامه این آموزش رو بدید
الزامات
برای استفاده از ViewBinding باید اندروید استودیو نسخه 3.6 و به بالا رو داشته باشید
و حتما گریدل خودتون رو هم به آخرین نسخه آپدیت کنید
مرحله ۱ : فعال سازی
اولین کاری که باید انجام بدید به گریدل پروژه مراجعه کنید
و در قسمت android تکه کد زیر رو وارد کنید
android { ... viewBinding { enabled = true } }
با این کار قابلیت استفاده از ViewBinding رو به پروژه خودمان اضافه کردیم
نکته بسیار مهم
با فعال کردن ViewBinding یک اتفاق خاص میفته ، چه اتفاقی ؟
خود اندروید استودیو میاد و برای هرچی لایوت که در پروژه وجود دارد
برای تک تک آن ها کلاس Binding ایجاد میکند
مثلا من یک لایوت به نام activity_main در پروژه دارم
اندروید استودیو یک کلاس Binding مخصوص لایوت activity_main ایجاد میکند
که نام کلاس ایجاد شده از نام لایوت پیروی میکنه ، به شکل زیر
activity_main ---> ActivityMainBinding
حالا اگه نام لایوت شما برابر بود با user ، نام کلاس Binding ایجاد شده برابر است با UserBinding
user ---> UserBinding
مرحله ۲ : کانفیگ
به اکتیویتی مورد نظر خودمون میریم
در اینجا باید از کلاس Binding استفاده کنیم
یعنی روی اکتیویتی اون رو ست کنیم
به کدهای زیر دقت کنید
ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); View view = binding.getRoot(); setContentView(view); }
خط ۱
در اینجا یک نمونه از کلاس Binding ایجاد کردیم
همون کلاسی که خود اندروید استودیو از روی لایوت ما یعنی activity_main ایجاد کرد
حالا هروقت که بخایم به یک ID از لایوت متصل بشیم دیگه خبری از findViewById نیست
خط 7 تا ۹
در اینجا هم کلاس Binding رو روی اکتیویتی ست کردیم
درواقع لایوت رو به روش ViewBinding روی اکتیویتی ست کردیم
مثال استفاده
من در لایوت خودم سه TextView دارم
و میخام روی هرکدوم یک متن رو ست کنم
به شکل زیر عمل میکنم ( به خط های ۱۰ ، ۱۱ و ۱۲ دقت کنید )
ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); binding.textView1.setText("همیار اندروید"); binding.textView2.setText("مرجع تخصصی توسعه اندروید"); binding.textView3.setText("www.HamyarAndroid.com"); }
در ادامه هم کدهای کامل من قرار دارند
Layout : activity_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:textSize="18sp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:textSize="18sp" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:textSize="18sp" /> </LinearLayout>
Activity : MainActivity
package com.hamyarandroid.viewbinding; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.hamyarandroid.viewbinding.databinding.ActivityMainBinding; public class MainActivity extends AppCompatActivity { ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); binding.textView1.setText("همیار اندروید"); binding.textView2.setText("مرجع تخصصی توسعه اندروید"); binding.textView3.setText("www.HamyarAndroid.com"); } }
کانفیگ ViewBinding روی فرگمنت
تا اینجا یاد گرفتید ViewBinding رو روی اکتیویتی ست کنید و استفاده کنید
برای فرگمنت هم به همین شکل هستش ، فقط در مرحله 2 ، یعنی کانفیگ
باید به روش زیر عمل کنید ، به کدها دقت کنید
private ResultProfileBinding binding; @Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = ResultProfileBinding.inflate(inflater, container, false); View view = binding.getRoot(); return view; } @Override public void onDestroyView() { super.onDestroyView(); binding = null; }
سخن آخر
امیدوارم از آموزش های همیار اندروید خوشتون بیاد
در جلسات بعدی هم کلی نکته درمورد ViewBinding براتون آموزش میدم
کانال و گروه تلگرامی همیار اندروید رو فراموش نکنید
منتظر کامنت های پر انرژی شما هستیم
بدرود
mrc
خواهش میکنم دوست عزیز
موفق باشید