Android View Binding

Sevgili Arkadaşlar Merhaba,

Android code geliştirenler için Google, Android 3.6.0 ile yeni bir güncelleme ve bu güncelleme içerisinde View Binding adında yeni bir özelliği kullanıma sundu.

Bildiğiniz üzere layout üzerindeki herhangi bir android widgetına erişirken Activity yahut Fragmentlarımız içerisinde findViewById() kullanmamız gerekiyor ve yakalamak istediğimiz widgetı ilgili widget türündeki sınıfa dönüştürmemiz gerekmekteydi.

Genel olarak kullanırken bu tarz işlemleri onCreate() içerisinde initialize edip sonrasında uygulamanın o activity ile ilgili aşamalarında kullanıyorduk.

Google yeni getirdiği işlevsel özellik ile bu işlemi yapmadan da layout içerisindeki widgetlara erişmemize olanak sağlıyor.

Bu özelliği kullanabilmeniz için uygulamanın build.gradle(Module:app) kısmına aşağıdaki kodu eklemeniz gerekiyor.

Bu kod gradle 4.0 üzeri için geçerlidir.

android {
viewBinding {
enabled = true
}

}

build.gradle dosyamızın senkronizasyonu tamamlandıktan sonra activitemize ait layout.xml dosyasına gidip widgetlerımıza her zaman yaptığımız şekilde id tanımlıyoruz.

Sonrasında layoutumuza ait aktivitye geliyoruz ve global olarak ActivityMainBinding binding; nesnesi tanımlıyoruz.

setContentView(R.layout.activity_main); şeklinde kullandığımız ve layoutumuza eriştiğimiz satırı kaldırarak, yerine global olarak tanımladığımız binding nesnemize ActivityMainBinding üzerinden inflate ettiğimiz pencereyi set ediyoruz. (Bu pencere bizim aktivitemize ait layout.xml dosyası olacaktır)

Ve hemen arrından artık binding nesnemize yüklemiş olduğumuz layout.xml layoutumuzu bir View nesnesine root olarak tanımlayıp işleme ilk başladığımızda pasif hale getirdiğimiz kod yerine bu view nesnesini kullanacağımızı söylüyoruz.

public class MainActivity extends AppCompatActivity {

ActivityMainBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);

    binding = ActivityMainBinding.inflate(getLayoutInflater());
    View view = binding.getRoot();

    setContentView(view);

    binding.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            binding.name.setText("View Binding Example");
            Toast.makeText(MainActivity.this,"Amateur Developer", Toast.LENGTH_LONG).show();
        }
    });
}
}

Kod örneğini indirmek için tıklayınız.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir