Java 从Hashmap/Arraylist提取值(地址)时出现问题
下面是我如何创建ListAdapter以及如何存储项目的一些代码。我的问题是我的蓝牙设备有一个列表。当我点击listitem时,我想在hashmap中提取蓝牙设备的macaddress。有人能帮我吗 MainActivity:我想如何提取它,以及如何将它添加到hashmap/arraylist:Java 从Hashmap/Arraylist提取值(地址)时出现问题,java,android-studio,bluetooth,hashmap,bluetooth-lowenergy,Java,Android Studio,Bluetooth,Hashmap,Bluetooth Lowenergy,下面是我如何创建ListAdapter以及如何存储项目的一些代码。我的问题是我的蓝牙设备有一个列表。当我点击listitem时,我想在hashmap中提取蓝牙设备的macaddress。有人能帮我吗 MainActivity:我想如何提取它,以及如何将它添加到hashmap/arraylist: @Override public void onItemClick(AdapterView<?> parent, View view, int position, long
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// mBTLeScanner.stop();
// Utils.toast(getApplicationContext(), "...");
}
...
public void addDevice(BluetoothDevice device, int rssi) {
String address = device.getAddress();
if (!mBTDevicesHashMap.containsKey(address)) {
BTLE_Device btleDevice = new BTLE_Device(device);
btleDevice.setRSSI(rssi);
mBTDevicesHashMap.put(address, btleDevice);
mBTDevicesArrayList.add(btleDevice);
}
else {
mBTDevicesHashMap.get(address).setRSSI(rssi);
}
adapter.notifyDataSetChanged();
}
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//mBTLeScanner.stop();
//toast(getApplicationContext(),“…”);
}
...
公共设备(蓝牙设备,int rssi){
字符串地址=device.getAddress();
如果(!mBTDevicesHashMap.containsKey(地址)){
BTLE_设备btleDevice=新的BTLE_设备(设备);
btleDevice.setRSSI(rssi);
mBTDevicesHashMap.put(地址,btleDevice);
mbtdevicesaraylist.add(btleDevice);
}
否则{
mBTDevicesHashMap.get(地址).setRSSI(rssi);
}
adapter.notifyDataSetChanged();
}
下面是我的ListAdapter类:
package de.viellandsteve.ble_applikation;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class ListAdapter_BTLE_Devices extends ArrayAdapter<BTLE_Device> {
Activity activity;
int layoutResourceID;
ArrayList<BTLE_Device> devices;
public ListAdapter_BTLE_Devices(Activity activity, int resource, ArrayList<BTLE_Device> objects) {
super(activity.getApplicationContext(), resource, objects);
this.activity = activity;
layoutResourceID = resource;
devices = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater =
(LayoutInflater) activity.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(layoutResourceID, parent, false);
}
BTLE_Device device = devices.get(position);
String name = device.getName();
String address = device.getAddress();
int rssi = device.getRSSI();
TextView tv_name = (TextView) convertView.findViewById(R.id.tv_name);
if (name != null && name.length() > 0) {
tv_name.setText(device.getName());
}
else {
tv_name.setText("No Name");
}
TextView tv_rssi = (TextView) convertView.findViewById(R.id.tv_rssi);
tv_rssi.setText("RSSI: " + Integer.toString(rssi));
TextView tv_macaddr = (TextView) convertView.findViewById(R.id.tv_macaddr);
if (address != null && address.length() > 0) {
tv_macaddr.setText(device.getAddress());
}
else {
tv_macaddr.setText("No Address");
}
return convertView;
}
}
viellandsteve.ble应用程序包;
导入android.app.Activity;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
导入java.util.ArrayList;
公共类ListAdapter_BTLE_设备扩展ArrayAdapter{
活动;
国际布局资源;
阵列列表设备;
公用ListAdapter_BTLE_设备(活动、int资源、ArrayList对象){
super(activity.getApplicationContext(),资源,对象);
这个。活动=活动;
layoutResourceID=资源;
设备=对象;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
充气机=
(LayoutFlater)activity.getApplicationContext().getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
convertView=充气机。充气(layoutResourceID,父项,false);
}
BTLE_Device=devices.get(位置);
String name=device.getName();
字符串地址=device.getAddress();
int rssi=device.getRSSI();
TextView tv_name=(TextView)convertView.findViewById(R.id.tv_name);
if(name!=null&&name.length()>0){
tv_name.setText(device.getName());
}
否则{
tv_name.setText(“无名称”);
}
TextView tv_rssi=(TextView)convertView.findViewById(R.id.tv_rssi);
tv_rssi.setText(“rssi:+Integer.toString(rssi));
TextView tv_macaddr=(TextView)convertView.findViewById(R.id.tv_macaddr);
if(address!=null&&address.length()>0){
tv_macaddr.setText(device.getAddress());
}
否则{
tv_macaddr.setText(“无地址”);
}
返回视图;
}
}
这里已经有了从散列映射中写入和读取的代码,那么您还需要做什么呢?