简体   繁体   中英

C# - Xamarin forms remove listview item on toggle

So, I want to remove the item in my listview that I toggled. I have a listview like this:

结果

Now I want that when I click something to be selected, that it will be removed from the listview, but the users must have a pop-up prompted first in which states if the user is really sure if the item can be deleted.

Here is my code that I have now:

private async void Switch_Toggled(object sender, ToggledEventArgs e)
        {
            Tasks task = (sender as Switch).BindingContext as Tasks;
            await ApiManager.UpdateTasksFromListAsync(task);
        }

This just updates a value on the API. But how can I remove/hide it from the listview?

This is the xaml code:

<ListView x:Name="lvwDetailPage" SeparatorVisibility="None">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="70" />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                        </Grid.RowDefinitions>

                        <Switch IsToggled="{Binding completed}" Grid.Column="0" Toggled="Switch_Toggled" />
                        <Label Grid.Column="1" Text="{Binding title}" TextColor="#212121" VerticalOptions="Center" Margin="10,0" />

                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    ObservableCollection<Tasks> TaskList;

    private async Task GetData(long id)
    {
        List<Tasks> tasks = await ApiManager.GetTasksFromListAsync(id);

        TaskList = new ObservableCollection<Tasks>(tasks);

        lvwDetailPage.ItemsSource = TaskList;

        lvwDetailPage.ItemSelected += LvwDetailPage_ItemSelected;
    }

    private async void Switch_Toggled(object sender, ToggledEventArgs e)
    {
        Tasks task = (sender as Switch).BindingContext as Tasks;

        if (task != null)
        {
            await ApiManager.UpdateTasksFromListAsync(task);
            TaskList.Remove(task);
        }          
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM