有没有办法替换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();