微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一种在列表视图中动态显示设备状态的方法

如何解决一种在列表视图中动态显示设备状态的方法

我的问题不是基于崩溃,而是基于好奇心,我有一个 BLE 应用程序和一个主页,我扫描设备并在列表视图中显示它们。我需要动态显示设备状态,但 StateChange 处理程序仅适用于适配器。我现在这样做的方法是在每次连接尝试后,我都会显示一个状态刷新的列表视图,但是如果其中一个设备在按钮的事件处理程序执行后断开连接,它不会自然地更新它,因为它不是动态实现的,而是以某种方式循环遍历设备的 Observable 集合,然后将每个状态保存到另一个字符串集合。我看到 xaml 中有一个名为 NativeDevice.Name 的绑定属性,它可以工作并在列表视图中显示设备名称,但 NativeDevice.State 返回一个枚举,我想它没有出现在列表视图中。我想知道是否有人遇到了这个问题并创建了一种以适当方式更新状态的方法。我是 Xamarin 的新手,所以如果有人觉得这个问题很烦人,请原谅我。

private readonly IAdapter _bluetoothAdapter;
        private List<IDevice> _gattDevices = new List<IDevice>();
        private List<IDevice> bledevicesFound = new List<IDevice>();
        CancellationTokenSource source = new CancellationTokenSource();
        ObservableCollection<string> statusDevice= new ObservableCollection<string>();
        public MainPage()
        {
            InitializeComponent();
            _bluetoothAdapter = CrossBluetoothLE.Current.Adapter;
            _bluetoothAdapter.Devicediscovered += (s,a) =>
            {
                _gattDevices.Add(a.Device);
            };
            CancellationToken token = source.Token;

        }
 _gattDevices.Clear();
            await _bluetoothAdapter.StartScanningForDevicesAsync();
            foreach (var device in _gattDevices)
            {
                if (device.Name == "BLEDevice")
                {
                    bledevicesFound.Add(device);
                }
            }
            foreach (var item in bledevicesFound)
            {
                statusDevice.Add(item.State.ToString());
            }
            listView.ItemsSource = eggsFound.ToArray();
            statusEggsView.ItemsSource = statusEggs;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。