2016-01-23 19 views
8

Używam klasy DataBinding do wiązania danych z modelu z elementami interfejsu użytkownika. Mogłem uzyskać wiążące działanie dla EditText za pomocą android:text="@{data.testData}". To jakoś nie działa na Spinner. Wszelkie pomysły i rozwiązania, aby uzyskać dane z klasy Pojo i wyświetlić go na obrotówki (mam 45 błystki)Powiązanie danych w Androidzie z układem xml

+1

Mając 45 błystki jest trochę dziwne. Czy rozważałeś inne obejścia lub projekty? –

+0

Tak, to jest formularz ankiety i jest bindowany w jedną stronę za pomocą narzędzia Android Form Enhancer (ui do modelu). Muszę teraz pracować w inny sposób. –

+2

Dziękuję za spojrzenie na to pytanie, z przyjemnością stwierdzam, że znalazłem rozwiązanie tego. Dla spinnera musimy użyć app: selection = "@ {data.testSpinnerData}" i obowiązkowo mieć metodę getter w twojej klasie Pojo, która zwróci TYLKO wartość całkowitą. na przykład. public int getTestSpinnerData() –

Odpowiedz

8

Oto przykład, że kiedyś to zrobić:

pierwszy, xml układu (przykładem my_layout.xml):

<?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="spinnerAdapter" 
      type="android.widget.ArrayAdapter" /> 
    </data> 

... 

    <android.support.v7.widget.AppCompatSpinner 
       android:id="@+id/spinner" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       app:adapter="@{spinnerAdapter}" /> 

.... 
</layout> 

Następnie kod Java (MyLayoutBinding mBinding):

adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_item, mData); 
mBinding.setSpinnerAdapter(adapter); 
+0

Gdzie jest zdefiniowany atrybut app: adapter? – Hong

+0

Nigdzie nie jest zdefiniowany, ponieważ powiązanie danych znajdzie metodę ustawiającą 'setAdapter()', gdy napotka 'app: adapter =" @ {spinnerAdapter} "' w ten sposób. – maohieng

+0

Czy możesz podać kod całej klasy, w której działa adapter (MyBayoutBidning mBinding)? Dzięki. – CACuzcatlan

Powiązane problemy