java - android 中的 Listview 项目应显示 ble 设备的名称,但应隐藏设备的 MAC 地址
问题描述
我一直在尝试找到一种在 android 应用程序中显示 Ble 设备的方法。我只想显示 Ble 设备的名称,但想隐藏设备的 MAC 地址。
目前我的代码获取 ble 设备列表并显示一串名称和 MAC 地址。从列表视图中选择时,包含 ble 设备名称和 MAC 的字符串被发送到另一个活动,其中 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);
}
});
推荐阅读
- javascript - 变量的setter可以调用它的getter吗
- android - 不能在意图中同时传递多个整数
- javascript - 对 ![String instance] 返回 true 的字符串调用 String.replace?
- python - Speech to Text - 将演讲者标签映射到 JSON 响应中的相应成绩单
- php - AMP:使用查询字符串参数“?amp=1”或子文件夹“/amp”有什么不同吗?
- angular - 如何在 Angular 6 中访问 http 响应标头
- python - 总和为常数的加权随机数数组
- android - 使用google api客户端编辑方法python上传扩展文件
- facebook - Facebook App Tester - 他们必须是开发人员吗?
- c++ - 这是绑定到要变异的非 RVO 返回值的惯用方式吗?