android 中的列表视图项应显示蓝牙设备名称但应隐藏 MAC 设备地址

Listview item in android should show name of ble device but should hide MAC address of device

我一直在尝试寻找一种在 android 应用程序中显示 Ble 设备的方法。我只想显示 Ble 设备的名称,但想隐藏设备的 MAC 地址。

目前我的代码用于获取蓝牙设备列表并显示一串名称和 MAC 地址。从列表视图中选择时,包含蓝牙设备名称和 MAC 的字符串将发送到另一个 activity,其中 MAC 用于连接到设备

String macadd = result.getDevice().getAddress();
String bt_name = result.getDevice().getName();
// check if device is already added to list
if(!device_mac_list.contains(macadd)){
   device_mac_list.add(macadd);
//  adds name and mac to new ble device to list
   devicelist.add("Device Name:" + bt_name + "\n" + "MAC:" + macadd);
   arrayAdapter.notifyDataSetChanged();
}

ListView 声明

private ListView bt_devices;
ArrayList<String> devicelist = new ArrayList<String>();
arrayAdapter = new ArrayAdapter<String>(DevActivity.this, android.R.layout.simple_list_item_1, devicelist);
bt_devices.setAdapter(arrayAdapter);

我只想显示设备名称,并在列表视图中隐藏 mac 地址。其余过程将相同

谢谢

解决方案是将设备的名称和 mac 地址作为键值格式存储在 Map 中。

map中存储键值对的代码为

HashMap<String, String> filterDevices = new HashMap<>();
if(!device_mac_list.contains(btMac)){
    device_mac_list.add(btMac);
//  storing bluetooth device name in map with device name and mac address in key value pair
    filterDevices.put(btName, btMac);
    devicelist.add("Device: "+btName);
    arrayAdapter.notifyDataSetChanged();
}

可以使用从列表视图选择中收到的名称从地图中检索 MAC 地址

bt_devices.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String deviceName = ((TextView)view).getText().toString();
        String deviceMac = filterDevices.get(deviceName);
        Log.d("select", deviceName+":"+deviceMac);
    }
});