mPairedDevicesArrayAdapter

mPairedDevicesArrayAdapter

有没有办法替换arrayadapter中的值

mPairedDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name);
..
..
for (BluetoothDevice device : pairedDevices) {
    String name = MPGDeviceDetailsControl.getDeviceDetails(this, device.getAddress(), device.getName()).getDisplayName();
    mPairedDevicesArrayAdapter.add(name + "\n" + device.getAddress());
}

如果我想替换其中一个条目,有没有任何方法可以在不删除和重新输入的情况下进行替换。
问题是它把它放在了最底层。

最佳答案

像这样的东西应该可以代替物品

int i = 0;
for (BluetoothDevice device : pairedDevices) {
    String name = MPGDeviceDetailsControl.getDeviceDetails(this, device.getAddress(), device.getName()).getDisplayName();
    mPairedDevicesArrayAdapter.remove(name); // has to copy all items back 1 position
    mPairedDevicesArrayAdapter.insert(name + "\n" + device.getAddress(), i); // copy them +1 again
    i++;
}

但是,如果您能够访问支持这个arrayadapter的列表并替换/修改它,则效率会更高。
ArrayList<Strign> mList = new ArrayList<String>();
mPairedDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name, mList);

// setup
mList.add...
mPairedDevicesArrayAdapter.notifyDatasetChanged();

// change something
mList.set(i, newValue); // just a replace, no copy
mPairedDevicesArrayAdapter.notifyDatasetChanged();

10-04 14:09