xamarin - 如何进行多选 ListView 并获取所选项目?

标签 xamarin xamarin.forms xamarin.android xamarin.ios

我有一个包含汽车品牌的 ListView 。我正在做一个基本的调查应用程序,用户需要选择所有适用的内容。到目前为止我只能根据网上的教程选择一项。有没有办法获得多选 ListView 并获取值?或者我还可以做哪些其他事情来实现这一目标?

var listView = new ListView();
listView.ItemsSource = new string[]
{
  "Honda",
  "Toyota",
  "Ford",
  "Tesla"
};

最佳答案

您需要做的第一件事是创建一个通用的东西,如下所示:

public class SelectableData<T> 
{ 
  public T Data { get; set; }
  public bool Selected { get; set; } 
}

接下来,您需要创建 ListView,用于显示数据和 Switch。在此示例中,我的数据仅包含名称和描述。然后,包装器包含选定的 bool 值。

<ListView ItemsSource="{Binding DataList}" Margin="20">
<ListView.ItemTemplate> 
    <DataTemplate> 
        <ViewCell> 
            <Grid Margin="0,0,0,10"> 
                <Grid.ColumnDefinitions> 
                    <ColumnDefinition Width="*" /> 
                    <ColumnDefinition Width="Auto" /> 
                </Grid.ColumnDefinitions> 
                <StackLayout VerticalOptions="CenterAndExpand"> 
                    <Label Text="{Binding Data.Name}"  /> 
                    <Label Text="{Binding Data.Description}" FontSize="10" /> 
                </StackLayout> 
                <Switch IsToggled="{Binding Selected}" Grid.Column="1" /> 
            </Grid> 
        </ViewCell> 
    </DataTemplate> 
</ListView.ItemTemplate>
</ListView>

然后用这样的东西绑定(bind)ListView:

public ObservableCollection<SelectableData<ExampleData>> DataList { get; set; }

ExampleData 类似于:

 public class ExampleData
{
  public string Name { get; set; }
  public string Description { get; set; }
}

要获取所选项目,请使用 foreach 循环遍历 DataList 并检查所选属性,如下所示:

foreach(var item in DataList)
{
   item.Selected // true if selected else false.
}

关于xamarin - 如何进行多选 ListView 并获取所选项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55179973/

相关文章:

c# - 在 Xamarin Forms 中将 Android API 目标级别从 11 升级到 12

xamarin.ios - 在构建 "tabs"应用程序时创建或注入(inject) ViewModel

c# - 如何从 Xamarin.Forms 中的可移植类库项目调用位于 Android 项目内部的方法?

ios - Xamarin.Forms - iOS - 在 UIButton 上放置多个图像的自定义效果

c# - Xamarin Forms 元素父属性为空

c# - Xamarin 表单动态添加页面/ View

Xamarin.Forms 图像未显示

c# - 如何修复 Xamarin 中 TakePicture 的 SyncContext.cs 问题?

android - 如何在 Xamarin.Android 中保持 Button.Pressed 状态?

xaml - ListView 中的 Xamarin.Forms Vertical StackLayout 仅显示一个(第一个)子级