Я создаю приложение, которое сканирует устройства BLE и отображает их в ListView. Проблема в том, что когда я один раз отображаю устройства один раз, но если я дважды сканирую, это приводит к получению устройств дважды и т. Д.
Это код, который я получил до сих пор. В Mainpage.cs я создаю ObservableCollection, где храню устройства и очищаю их каждый раз, когда вызываю метод сканирования.
<StackLayout Margin="15,15,10,15" >
<Label Text="Paired Devices" HorizontalOptions="Center" FontSize="Subtitle"/>
<ListView x:Name="paired" ItemsSource="{Binding deviceList}" ItemTapped="Paired_ItemTapped" BackgroundColor="White" SeparatorColor="Black">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text="{Binding Name}"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Mainpage.cs
private void Button_Clicked(object sender, EventArgs e)
{
if(ble.State == BluetoothState.Off)
{
DisplayAlert("Bluetooth", "Please turn on bluetooth", "OK");
}
deviceList.Clear();
adapter.DeviceDiscovered += (s, a) =>
{
if (a.Device.Name != null)
{
deviceList.Add(a.Device);
}
Console.WriteLine(deviceList.Count);
};
if (!ble.Adapter.IsScanning)
{
adapter.StartScanningForDevicesAsync();
}
}