0

所以我有一个ObservableCollection其中IDevice包含一个收集蓝牙设备的外围设备。

public partial class MainPage : ContentPage
{

    public ObservableCollection<IDevice> Devices { get; set; }

    public MainPage()
    {
        Devices = new ObservableCollection<IDevice>();
        Padding = new Thickness(0, 20, 0, 0);
        var listView = new ListView();
        listView.ItemsSource = Devices;
        Content = listView;
        Refreshcmd();
    }

    public void Refreshcmd()
    {
        var adapter = CrossBluetoothLE.Current.Adapter;
        adapter.DeviceDiscovered += (s, a) => Devices.Add(a.Device);
        adapter.StartScanningForDevicesAsync();
    }
}   

我的问题是,除了实际的蓝牙设备之外,listview 也填充了空实体,这会导致一个非常长的列表,其中每 5 行左右都有实际设备。

我怀疑在将数据添加到Devices. 我相信一个解决方法是用一个条件来改变 lambda 表达式,这样 device != empty ish。此外,也许可以反过来,以某种方式告诉列表视图它不应该显示“空”数据。

我只是不确定我将如何去做。

4

1 回答 1

0
adapter.DeviceDiscovered += (s, a) => 
{
  // test here for any conditions you want to exclude
  if (a.Device != null) {
    Devices.Add(a.Device);
  }
}
于 2018-08-12T00:27:26.183 回答