MvvmCorss включает в себя аккуратный механизм для этого, начиная с версии 4.1.5. Он называется TemplateSelector и определяется в интерфейсе IMvxTemplateSelector. Цель этого интерфейса - сопоставить ваш элемент с идентификатором макета на основе правила, которое вы можете определить.
Так что это не совсем «группа по», но вы можете использовать один макет для заголовка группы и другой для каждого элемента группы.
public class TypeTemplateSelector : IMvxTemplateSelector
{
private readonly Dictionary<Type, int> _typeMapping;
public TypeTemplateSelector()
{
_typeMapping = new Dictionary<Type, int>
{
{typeof(HeaderGroupViewModel), Resource.Layout.header_group},
{typeof(GroupItemViewModel), Resource.Layout.group_item}
};
}
public int GetItemViewType(object forItemObject)
{
return _typeMapping[forItemObject.GetType()];
}
public int GetItemLayoutId(int fromViewType)
{
return fromViewType;
}
}
И в axml вы устанавливаете его, используя полное имя класса селектора, за которым следует имя сборки:
<MvvmCross.Droid.Support.V7.RecyclerView.MvxRecyclerView
android:id="@+id/recyclerView"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:MvxItemTemplate="@layout/appointment_feed_item"
app:MvxTemplateSelector="RecyclerViewDifferentTemplates.Droid.TypeTemplateSelector,RecyclerViewDifferentTemplates.Droid"
app:MvxBind="ItemsSource Items" />
Источник и дополнительная информация: RecyclerView TemplateSelector в MvvmCross
Е.И.В.