我正在使用Xamarin的BLE插件来扫描设备。然后,我想列出设备的ID。但是,我的ListView没有显示ID(只是显示空字段)。
Cs:
IBluetoothLE ble;
IAdapter adapter;
ObservableCollection<IDevice> deviceList;
IDevice device;
public BltScan()
{
InitializeComponent();
ble = CrossBluetoothLE.Current;
adapter = CrossBluetoothLE.Current.Adapter;
deviceList = new ObservableCollection<IDevice>();
bltlist.ItemsSource = deviceList;
scan();
}
public async void scan()
{
try
{
deviceList.Clear();
adapter.DeviceDiscovered += (s, a) =>
{
deviceList.Add(a.Device);
// DisplayAlert("Disc", a.Device.Id.ToString(), "OK");
};
//We have to test if the device is scanning
if (!ble.Adapter.IsScanning)
{
await adapter.StartScanningForDevicesAsync();
}
}
catch (Exception ex)
{
DisplayAlert("Notice", ex.Message.ToString(), "Error !");
}
}
XAML:
<ListView x:Name="bltlist">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Id}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
将设备添加到deviceList时,我会发出警报,它会正确显示扫描设备的ID。
甚至更多:我做了一个包装器类,用于存储一个IDevice,它的ID为String,但ListView仍然不显示ID。我什至可以在Text="{Binding GarbageField}"
中输入一个不存在的字段,它不会抱怨,只是列出所有设备并显示任何内容。
我关注了https://www.youtube.com/watch?v=UMbb5FwGWSw和https://github.com/didourebai/BLEPluginDemo,并在youtube评论中看到其他人也遇到了同样的困难。但是我找不到这个问题的答案。
答案 0 :(得分:0)
以防您无法正常工作。 您也可以收集字符串,然后在找到新设备后从该列表中添加和删除。 当用户单击设备时,将获得该列表中的ID并从设备列表中获得相同的ID