Я использую BLE Plugin для Xamarin для сканирования устройств.Затем я хочу перечислить Id устройств.Однако мой ListView не отображает идентификатор (просто отображает пустые поля).
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>
Я могу сделать предупреждение, когдадобавление устройств в список устройств, и он правильно отображает идентификатор отсканированного устройства.
Более того: я создал класс-обертку, в котором хранится IDevice, а его идентификатор - String, а в ListView идентификатор не отображается.Я даже могу ввести несуществующее поле в Text="{Binding GarbageField}"
, и он не будет жаловаться, а просто перечислит все устройства без нашего отображения.
Я следовал https://www.youtube.com/watch?v=UMbb5FwGWSw и https://github.com/didourebai/BLEPluginDemo ив комментариях на ютубе видно, что у других была такая же борьба.Но я не смог найти никаких ответов на проблему.