[英]How to Save Spinner Position with Shared preferences?
我正在制作一个 android 应用程序,要求用户通过微调器将蓝牙配对设备连接到 select。
当用户第一次打开应用程序时,用户会从列表中选择蓝牙配对设备**。 然后当应用程序第二次打开时,我希望选择相同的蓝牙配对设备。 我不希望用户每次打开应用程序时都使用配对设备 select。 怎么做?
Spinner btPairedDevicesSpinner;
BluetoothManager mBluetoothManager;
BluetoothAdapter mBluetoothAdapter;
BluetoothDevice [] mBluetoothDeviceArray;
btPairedDevicesSpinner = findViewById(R.id.btPairedDevicesSpinner);
mGetBluetoothPairedDevice ();
btPairedDevicesSpinner.setOnItemSelectedListener(mPairedDeviceOnItemSelectedListener);
public void mGetBluetoothPairedDevice () {
Set<BluetoothDevice> mPairedDevice = mBluetoothAdapter.getBondedDevices();
mBluetoothDeviceArray = new BluetoothDevice[mPairedDevice.size()];
String [] strings = new String[mPairedDevice.size()];
int index = 0;
if (mPairedDevice.size() > 0) {
for (BluetoothDevice device : mPairedDevice) {
mBluetoothDeviceArray [index] = device;
strings [index] = device.getName();
index++;
}
}
else {
String mOnDevice = "No Device found";
mPairedDeviceArrayAdapter.add(mOnDevice);
}
ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, strings);
btPairedDevicesSpinner.setAdapter(mArrayAdapter);
}
private final AdapterView.OnItemSelectedListener mPairedDeviceOnItemSelectedListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
ConnectThread mConnectThread = new ConnectThread(mBluetoothDeviceArray [i], view);
mConnectThread.start();
mBluetoothToolBar.setSubtitle("Connecting");
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
Toast.makeText(BluetoothMain.this, "Nothing is selected", Toast.LENGTH_SHORT).show();
}
};
一种应该起作用的方法。 将所选设备名称存储在共享首选项中。 (在其他地方创建 sharedPref object onCreate() 并在微调器 onItemChanged() 中进行编辑)
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
sharedPref.edit().putString("btDeviceName", "the name").apply();
调用 btPairedDevicesSpinner.setAdapter(mArrayAdapter) 后; 从共享首选项加载设备名称,如果微调器上有一个调用 setSelection()
String deviceName = sharedPref.getString("btDeviceName", null);
if(deviceName != null){
btPairedDevicesSpinner.setSelection(mArrayAdapter.getPosition("deviceName "));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.