0
我想更新每个信标的RSSI值。但是,我似乎并没有得到它的工作。我想用地图或HashMap中,以更新设备持有人的RSSI:如何更新BLE信标列表中设备的RSSI
private Map<BluetoothDevice, Integer> mDevicesRssi;
这是我的设备Holder类:
class DeviceHolder{
BluetoothDevice device;
int rssi;
public DeviceHolder(BluetoothDevice device, int rssi){
this. device = device;
this.rssi = rssi;
}
}
和我的适配器类
private class LeDeviceListAdapter extends BaseAdapter {
private ArrayList<BluetoothDevice> mLeDevices;
private ArrayList<DeviceHolder> mLeHolders;
private LayoutInflater mInflator;
public LeDeviceListAdapter() {
super();
mLeDevices = new ArrayList<BluetoothDevice>();
mLeHolders = new ArrayList<DeviceHolder>();
mInflator = DeviceScanActivity.this.getLayoutInflater();
}
public void addDevice(DeviceHolder deviceHolder) {
if(!mLeDevices.contains(deviceHolder.device)) {
DeviceHolder actualDeviceHolder = new DeviceHolder
mLeDevices.add(deviceHolder.device);
mLeHolders.add(deviceHolder);
}
else {
mDevicesRssi.put(deviceHolder.device, deviceHolder.rssi);
}
mLeDeviceListAdapter.notifyDataSetChanged();
}
我想我必须创建一个类似LeDeviceListAdapter类的数组,例如:
mDevicesRssi = new Map<BluetoothDevice, Integer>();
但是,这给了我的错误,地图是抽象的。 我的问题是:是否有人提示如何更新deviceHolder对象的rssi,以便RSSI在应用程序中显示的列表中更新?
其他一切似乎都工作正常。当我只添加没有if条件的设备时,应用程序会为每个广告列出一个新设备 - >没有过滤器。
非常感谢
Sayus
DeviceHolder actualDeviceHolder =新的DeviceHolder是错误的,不应该被视为代码的一部分!我用代码进行实验的剩余片段... – Sayus