如何获取适配器对象中添加的位置
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();
}
我正在建立蓝牙连接。
首先我在 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();
}