带有ItemTemplate选择的嵌套ListView

时间:2014-03-15 12:09:52

标签: android xamarin mvvmcross

将Xamarin Android与MvvmCross框架结合使用。

我有一个人员列表,每个人都有一个嵌套的宠物列表。 人员显示在ListView中。嵌套的宠物显示在每个人的嵌套ListView中。

如何为每个宠物清单指定一个自定义适配器,以便根据动物类型动物显示动物?

简化课程:

List<Person> People

class Person
{
    string Name {get; set; }
    bool Sex {get; set; }
    List<IAnimal> Pets {get; set; }
}

class Fish: IAnimal
{
    string Name {get; set; }
    bool HasScales {get; set; }
}

class Bird: IAnimal
{
    string Name {get;set; }
    bool CanFly {get; set; }
    int WingSpan {get; set; }
}

此致

亚瑟

1 个答案:

答案 0 :(得分:1)

从UX角度来看,将ListView放在ListView内通常是一个坏主意 - 因为两者将独立滚动并独立地使用Touch操作。如果您愿意,可以:

  • 使用ExpandableListView(如@ NameSpace的Java答案
  • 中所述)
  • 使用外部ListView,其中每个单独的项目视图包含内部LinearLayout
  • 使用绑定到列表的展平版本的单个外部ListView - 例如其中每个人都是一种提供部分开始和结束行以及宠物在身体中的部分
  

如何为每个宠物清单指定一个自定义适配器,以便根据动物类型动物显示动物?

无论您选择在上面使用哪种方法,都需要掌握MvxListViewMvxLinearLayout或其父级中使用FindViewById的任何方法 - 然后您可以创建和设置适配器 - 请参阅https://github.com/MvvmCross/MvvmCross-Tutorials/blob/master/Working%20With%20Collections/Collections.Droid/Views/PolymorphicListItemTypesView.cs

中的示例

如果Adapter父级本身就是列表视图,那么这意味着您需要提供一个自定义MvxListItemView作为父级 - 例如了解如何在MvxListView create binding for template layout from code

中返回自定义视图