如何告诉旋转器项目加载结束后应调用哪种方法



我有此代码:

List<BluetoothDevice> devices;
if (BluetoothDevice.ACTION_FOUND.equals(action)){
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            if(device.getName() != null) {
                devices.add(device);
                Log.i("FOUND!", device.getName());
                devicesSpinner.setAdapter(new ArrayAdapter(context, android.R.layout.simple_spinner_dropdown_item, devices));
            }
        }

和在旋转器列表中,我获得了Mac地址,我如何更改为name((?

将名称添加到列表中,而不是整个设备。

final List<String> names = new ArrayList<>();
if (BluetoothDevice.ACTION_FOUND.equals(action)){
    BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
    final String name = device.getName();
    if(name != null) {
        names.add(name);
        Log.i("FOUND!", name);
        devicesSpinner.setAdapter(
            new ArrayAdapter<String>(context, 
               android.R.layout.simple_spinner_dropdown_item, 
               names));
    }
}

替代解决方案是实现您自己的适配器类,该类将延长ArrayAdapter<BluetoothDevice>,该类将调用getItem(position).getName()

谢谢。我所做的是:

if (BluetoothDevice.ACTION_FOUND.equals(action)){
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            if(device.getName() != null) {
                devices.add(device);
                Log.i("FOUND!", device.getName());
                ArrayAdapter arrayAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_dropdown_item, devices){
                    @Nullable
                    @Override
                    public Object getItem(int position) {
                        return devices.get(position).getName();
                    }
                };
                devicesSpinner.setAdapter(arrayAdapter);
            }
        }

最新更新