دوستان عزیز سلام
به جلسه دوم 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
خواهش میکنم دوست عزیز
موفق باشید