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 ответ

Решение

Вы должны использовать специальный адаптер для этого.

Несколько примеров показывают, как использовать выбор типа ячейки. Увидеть:

например, из 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

Этот вопрос связан с:

Другие вопросы по тегам