2015-10-07 13 views
6

Yeni Android veri bağlama kitaplığını kullanmaya çalışıyorum ve seçili değerle bir döndürücü yerleştirmeye çalışırken aşağıdaki hatayı alıyorum. (Android Studio derleme sırasında)Android çevirici ile DataBindingUtil nasıl kullanılır?

Hata Mesajı: başarmıştır orada

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <data> 

     <variable 
      name="receipt" 
      type="com.example.model.Receipt" /> 
    </data> 
    </LinearLayout> 
    <Spinner 
     android:layout_width="wrap_content" 
     android:id="@+id/currency" 
     android:layout_height="wrap_content" 
     android:spinnerMode="dropdown" 
     android:entries="@array/currency_array" 
     app:selection="@{receipt.currency}" /> 
    </LinearLayout> 
</layout> 

Herkes veri bağlanarak almak için:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'. java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Cannot find the setter for attribute 'app:selection' with parameter type java.lang.String. file:/Users/ove/Code/AndroidStudio/Samples/Receipts/app/src/main/res/layout/dialogfragment_inputamount_db.xml loc:40:29 - 40:44 ****\ data binding error ****

My düzen dosyası (tamamlanmadı) Aşağıdaki görünüyor iplikçikler ile çalışmak?

Ove

cevap

2

olmayan bir değer BindingUtils sınıfı oluştur ve setSelectio'yu yapıştır n yöntemi spinner iç

public class BindingUtils 
    { 
     @BindingAdapter({"bind:selection"}) 
     public static void setSelection(Spinner spinner, int position) 
     { 
      spinner.setSelection(position); 
     } 
    } 

app:selection="@{receipt.currencyIdx}" 

Thats yapmanız gereken tek şey.

+1

Bu, tek yönlü ciltleme, iki yönlü bağlama hakkında çalışacak? Spinnerdaki bir öğeyi seçmek modeli günceller. –

1

AbsSpinner miras ayarlayıcı Spinner:setSelectionint parametre vardır değil - String: Bir pozisyon geçmesi gerekir

public void setSelection(int position)

seçimi

<Spinner 
    android:layout_width="wrap_content" 
    android:id="@+id/currency" 
    android:layout_height="wrap_content" 
    android:spinnerMode="dropdown" 
    android:entries="@array/currency_array" 
    app:selection="@{receipt.currencyIdx}" /> 
</LinearLayout> 
İlgili konular