MvvmCross: динамический выбор шаблона элемента для MvxListView
Если у меня есть представление со следующим определением MvxListView:
<Mvx.MvxListView
android:layout_marginTop="10px"
android:textFilterEnabled="true"
android:choiceMode="singleChoice"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="20dp"
local:MvxBind="ItemsSource Data; ItemClick LaunchCapabilityViewCmd"
local:MvxItemTemplate="@layout/itemtemplate1" />
Вместо жесткого кодирования MvxItemTemplate для itemtemplate1, можно ли динамически установить его в зависимости от типа данных, которые я хочу отобразить в этом представлении? Я ищу аналогичную функциональность для DateTemplateSelector WPF.
ТИА.
1 ответ
Вы должны использовать специальный адаптер для этого.
Несколько примеров показывают, как использовать выбор типа ячейки. Увидеть:
полиморфные списки в https://github.com/slodge/MvvmCross-Tutorials/tree/master/Working%20With%20Collections
сгруппированные списки в представлениях списка сеансов в https://github.com/slodge/MvvmCross-Tutorials/tree/master/Sample%20-%20CirriousConference
например, из PolymorphicListItemTypesView.cs
protected override View GetBindableView(View convertView, object source, int templateId)
{
if (source is Kitten)
templateId = Resource.Layout.ListItem_Kitten;
else if (source is Dog)
templateId = Resource.Layout.ListItem_Dog;
return base.GetBindableView(convertView, source, templateId);
}
Для Android также существует оптимизация, которая должна быть добавлена к существующим образцам полиморфного адаптера - чтобы включить использование GetItemViewType
к лучшему convertView
повторное использование - см. https://github.com/slodge/MvvmCross/issues/333
Этот вопрос связан с: