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