android databing etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
android databing etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

23 Nisan 2017 Pazar

Data Binding

Android uygulama geliştirirken UI ile java sınıflarını birbirine bağlamanın en sıkıcı işlerden biri olduğu bilinir . Bu sebeptendir ki bu amaçla kullanılan Butterknife şu android geliştiricileri arasında en popüler kütüphanlerden biri haline geldi . Son zamanlarda sıkıntıyı farketmiş olucaklar ki Google/IO 2015 te yeni data binding support library i tanıttı . Bu kütüphane sayesinde itemlerinizi tek tek  arayüzden findByViewId ile yakalayıp ardından onları cast edip -hataya gayet açık yöntemler- ardından onlara tek tekmodelinizdeki ilgili parametreleri doldurmak gibi zahmetli bir işten kurtulabilirsiniz . Kullanımı gayet basit tutulan kütüphanenin örneğini sayfanın en altındaki linkten bulabilirsiniz .

STEP 1 (Temel)
İlk olarak kütüphaneyi kullanabilmeniz için build.gradle dosyanızdan dataBinding i aktif hale getirmeniz yeterli . "Gradle version minimum 1.5.0 olmalı !"

...android {
compileSdkVersion ...
buildToolsVersion ...
defaultConfig {...}
dataBinding { enabled = true }
 ...
} 

Kullancağınız layout dosyalarında ise dikkat etmeniz gereken ilk şey "<layout>" tag' ile başlayıp derleyiciye bu dosyayı bind etmesi gerektiğini belirtmektir.

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout 
  android:layout_width="match_parent" 
  android:layout_height="match_parent">
 
     <TextView android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

</RelativeLayout>
</layout>

Tebrikler artık findByViewId methodundan kurtuldunuz . Bu dosyadaki itemlerinizi direk activity sınıfınızdan kullanabilirsiniz .

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
final ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView( this, R.layout.activity_main);
activityMainBinding.text.setText("Hello World Test"); }
STEP 2(Arayüze Müdahale)
Android binding library yukarıda da görüldüğü gibi ilk etapta findByViewId ile araryüzü activity e bağlama zorunluluğunu ortadan kaldırmıştır . Tabi sadece bununla sınırlı olmayan kütüphane ile modellerinizi de bu arayüz itemlerine zahmetsiz init edebilirsiniz .

Bunun için ilk yapmanız gereken layout dosyanızda kullancağınız model i "<data>" tag i içerinde belirtmek .

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android">
  <data>
      <variable 
           name="testModel"
           type="com.example.databinding.Test" />
  </data>

<RelativeLayout 
   android:layout_width="match_parent" 
   android:layout_height="match_parent"> 
<TextView 
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@{testModel.textStr}" />

 </RelativeLayout> 
</layout>
Örnekte kullanılacak olan TestModel i sadece textStr adında bir string içeren basit bir pojo modeli olarak düşünebilirsiniz . TextView altında bulunan android:text="@{testModel.textStr}" tagi bu textview a modeldeki textStr nin doldurulacağı anlamına gelir . Artık tek yapmanız gereken activity sınıfınızdan arayüze modelinizi setlemek .

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        final ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(
                this, R.layout.activity_main);
        Test test = new Test("Hello World Test 2");
        activityMainBinding.setTestModel(test);
    }
Kullanımı gayet basit tutulan kütüphanenin örneğini linkten bulabilirsiniz . -Picasso ile image nasıl eklenir , layout a logic nasıl yazılır linkte mevcut -