Android layout MvvmCross:MvxListView的动态项目模板选择

Android layout MvvmCross:MvxListView的动态项目模板选择,android-layout,xamarin,mvvmcross,itemtemplate,itemtemplateselector,Android Layout,Xamarin,Mvvmcross,Itemtemplate,Itemtemplateselector,如果我有一个具有以下MvxListView定义的视图: <Mvx.MvxListView android:layout_marginTop="10px" android:textFilterEnabled="true" android:choiceMode="singleChoice" android:layout_width="fill_parent" android:layout_height="fill_parent" android:

如果我有一个具有以下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不同,是否可以根据要在此视图中显示的数据类型动态设置它?我正在寻找与WPF的DateTemplateSelector类似的功能


TIA。

您必须使用自定义适配器来执行此操作

一些示例演示了如何使用单元格类型选择。见:

  • 中的多态列表

  • 中的会话列表视图中的分组列表

e、 g.来自

对于Android,还有一个优化,应该添加到现有的多态适配器示例中-包括使用
GetItemViewType
以更好地
convertView
重用-请参阅

这些问题与:


我已经检查了示例,其中包含优化。因此,您可以关闭此问题:)
        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);
        }