Получение нескольких одинаковых записей в списке - PullRequest
0 голосов
/ 07 ноября 2019

Я создаю приложение, которое сканирует устройства 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();
            }
        }

1 Ответ

1 голос
/ 07 ноября 2019

Вы не показали весь код здесь, который вы должны иметь. Так что без этого это просто догадка. Наиболее вероятная причина этого - вы добавляете значения в deviceList , не удаляя предыдущие элементы.

Убедитесь, что при добавлении элементов в deviceList удалите старые элементы из вашей Коллекции, создав экземпляр нового объекта своей Коллекции или удалив ненужные (старые) элементы из своей Коллекции. перед добавлением каких-либо новых предметов к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...