2016-01-23 27 views
8

我使用DataBinding類將數據從模型綁定到UI元素。我可以使用android:text="@{data.testData}"獲得對EditText的綁定。這對某個微調不起作用。任何意見或解決方案,從Pojo類獲取數據,並在旋轉器上顯示它(我有45個紡紗)使用xml佈局的Android微調器數據綁定

+1

有45個紡紗是有點奇怪。您是否考慮過其他解決方法或設計? –

+0

是的,這是一個調查表單,並綁定了一種使用Android Form Enhancer(用戶模型)的方式,我需要現在就使用其他方式工作 –

+2

感謝您看看這個問題,我很高興地說,我發現這個解決方案。對於微調,我們需要使用app:selection =「@ {data.testSpinnerData}」,並且必須在Pojo類中有一個getter方法,它只返回一個整數值。例如。 public int getTestSpinnerData() –

回答

8

下面是一個例子,我用來做什麼的:

首先,你的佈局XML(例如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> 

那麼你的java代碼(MyLayoutBinding mBinding):

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

應用程序在哪裏定義了適配器屬性? – Hong

+0

它沒有在任何地方定義,因爲當它遇到像這樣的app:adapter =「@ {spinnerAdapter}」時,數據綁定將自己發現setter方法'setAdapter()'。 – maohieng

+0

你可以提供適配器所在的整個類的代碼(MyLayoutBidning mBinding)嗎?謝謝。 – CACuzcatlan