همانطور که احتمالا در جریان هستید یکی از مشکلات و دردسرهای دولوپرهای اندروید سر و کله زدن با خطایی به نام null pointer exception است در اصل ویو بایندینگ جهت هر چه کمتر کردن این خطا که همگی ما حداقل یکبار با آن روبه رو شده ایم توسط گوگل در جت پک قرار گرفت با استفاده از این روش خصوصا در معماری MVVM می‌توانیم با پدیده پرتکراری به نام findViewById در اپلیکیشن ها خداحافظی کنیم!

پیاده سازی ویوبایندینگ

برای فعال سازی این قابلیت کافیست در فایل build.gradle کد زیر را اضافه کنیم:

    viewBinding{
        enabled = true
    }

کارکرد این قابلیت به صورتی است که برای لایه های موجود در اپلیکیشن کلاسی معادل با آن میسازد که در هر جایی قابل استفاده است در اصل لایه توسط نرم افزار bind می شود

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

ActivityMainBinding mainBinding = 
ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(mainBinding.getRoot());
  }
}

همانطور که ملاحظه میکنید نمونه ای از لایه activity_main.xml ایجاد کردیم که توسط اون میتونیم به هر آی دی متصل بشیم و در اینجا نیازی به findViewById نیست همچنین در این کلاس متدی استاتیک به نام getRoot وجود دارد که روت لایه را برمیگرداند اگر به طور نمونه در این لایه یک تکست ویو داشته باشیم به کد زیر:


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

       <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textViewMain"/>

</RelativeLayout>

در زمان پیاده سازی آن در اکتیویتی خواهیم داشت:

 mainBinding.textViewMain.setText("ParsClick");

و در فرگمنت ها خواهیم داشت:

@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    mainbinding = FragmentMainBinding.inflate(inflater, container, false);
    View view = mainbinding.getRoot();
    return view;
}

به همین سادگی!