Как привязать пользовательский объект к макету spinner с помощью библиотеки привязки данных?
Я хочу привязать свой объект к макету строки spinner с помощью библиотеки привязки данных android. Post 1 иPost 2 не объяснили, как я могу использовать привязку данных и как связать несколько полей (а не только одну строку) объекта данных.
Мой объект данных выглядит следующим образом:
class Data{
public final String imageUri;
public final String title;
public final int totalCount;
}
Планировка I wish выглядит так:
<!-- horisontal orientation -->
<LinearLayout>
<!-- Icon -->
<ImageView/>
<!-- Title -->
<TextView/>
<!-- TotalCount -->
<TextView/>
</LinearLayout>
И как это связано, я не знаю...
1 ответ:
Чтобы использовать привязку данных, необходимо обернуть весь макет в тег layout.Таким образом, Вы можете назначить модель для вашего представления, так что это должно быть вашим макетом.
<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>
Предположим, что ваш используется, чтобы показать Spinner и Ваше имя макета custom_spinner.xml . Тогда вот как вы устанавливаете данные в макет. После установки адаптера Spinner, вот что вам нужно сделать
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 }