Java 从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

下面是我如何创建ListAdapter以及如何存储项目的一些代码。我的问题是我的蓝牙设备有一个列表。当我点击listitem时,我想在hashmap中提取蓝牙设备的macaddress。有人能帮我吗

MainActivity:我想如何提取它,以及如何将它添加到hashmap/arraylist:

     @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(“无地址”);
}
返回视图;
}
}

这里已经有了从散列映射中写入和读取的代码,那么您还需要做什么呢?