如何获取适配器对象中添加的位置

How to get position of added in adapter object

我正在建立蓝牙连接。

首先我在 ListView:

中列出他们的名字和地址
pairedDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress());


pairedListView.setOnItemClickListener(mDeviceClickListener);

我为每个找到的设备创建一个 onClick 事件。现在我需要在 onClick 事件中获取 BluetoothDevice,而不仅仅是地址..

    private AdapterView.OnItemClickListener mDeviceClickListener
                = new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {

String info = ((TextView) v).getText().toString();
            String address = info.substring(info.length() - 17);

快速解决方案: 将所有设备存储在数组中。当调用 onItemClick 时,arg2 实际上是数组中的索引,它将等于数组中的索引。

好的解决方案: 扩展 ArrayAdapter 并实现您的自定义逻辑。

制作一个arrayList,将所有扫描到的设备存放在arrayList中。

 ArrayList<BluetoothDevice> deviceArrayList; //store all the scanned devices on it.
 BluetoothDevice bluetoothDeviceSelected = null;
 String name,address;

 @Override
 public void onItemClick(AdapterView<?> parent, View view, int position, long id)  {

    bluetoothDeviceSelected = deviceArrayList.get(position);
    name=bluetoothDeviceSelected.getName();
    address=bluetoothDeviceSelected.getAddress();
}