2

アンドロイドのデータバインディングライブラリでオブジェクトをスピナーの行レイアウトにバインドしたいと考えています。 Post 1Post 2私はどのようにデータバインディングを使用することができ、複数のフィールド(1つの文字列だけではない)をデータオブジェクトにバインドする方法について説明していません。データバインディングライブラリを使用してカスタムオブジェクトをスピナーレイアウトにバインドする方法はありますか?

のように私のデータオブジェクトが見えます。私のようにルックスを望む

class Data{ 
    public final String imageUri; 
    public final String title; 
    public final int totalCount; 
} 

レイアウト:

<!-- horisontal orientation --> 
<LinearLayout> 
    <!-- Icon --> 
    <ImageView/> 

    <!-- Title --> 
    <TextView/> 

    <!-- TotalCount --> 
    <TextView/> 
</LinearLayout> 

、それは私にはわからないバインドする方法を

+0

カスタムアダプタである必要があり、面白い表情を行うために必要なものですオブジェクトとレイアウト – Sergey

答えて

1

あなたがラップする必要があり...あなたの全体のレイアウトはレイアウトタグでデータバインディングを使用することができます。この方法でモデルをビューに割り当てることができます。

<layout> 
    <data> 
    <variable name="data" type="your.packagename.Data"> 
    </variable> 
    </data> 
    <!-- horisontal orientation --> 
    <LinearLayout> 
    <!-- Icon --> 
    <ImageView 
     android:src="@{data.imageUri}"/> 

    <!-- Title --> 
    <TextView 
     android:text="@{data.title}"/> 

    <!-- TotalCount --> 
    <TextView 
     android:text="@{data.totalCount}"/> 

    </LinearLayout> 
</layout> 

は、あなたがスピナー&レイアウト名がcustom_spinner.xmlであることを示すために活動を使用していると仮定します。次に、データをレイアウトに設定する方法があります。スピナーアダプタを設定した後、ここにあなたが

Data data; // Data object 
CustomSpinnerBinding binding = DataBindingUtil.inflate(R.layout.custom_spinner); 
binding.setData(data); 

にカスタムデータを結合する別の方法でこのアンドロイドデータバインディングライブラリがこの機能をサポートしていない場合は

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    CustomSpinnerBinding binding = DataBindingUtil.inflate(R.layout.custom_spinner); 
    binding.setData(dataList.get(position)); // you should pass dataList as an argument in Custom Adapter constructor 
} 
+0

あなたは説明することができます:誰がレイアウトの_data variable_を設定しましたか?私はこのメカニズムを理解したい – Sergey

+0

私はレイアウトにデータをバインドする方法を理解していますが、問題は:スピナーアダプタとデータオブジェクトのセットでバインディングメカニズムを使用する方法ですか? – Sergey

+0

SpinnerAdapterを共有します –

関連する問題