[英]How to use Spinner to Save selection to shared preference
I have a spinner view called Spinner_Gender
, I made array, array adapter and made onItemSelectedListener
. 我有一个名为
Spinner_Gender
的微调器视图,我制作了数组,数组适配器并制作了onItemSelectedListener
。 I want to save the selected item position which is integer to shared preference, I tried using a string with Editor and putInt, it saved well. 我想保存选择的项目位置,该位置是共享首选项的整数,我尝试将字符串与Editor和putInt一起使用,保存得很好。 But when reloading the saved data to the spinner using
.setSelection
it gives an error because it wants an integer not string. 但是,使用
.setSelection
将保存的数据重新加载到微调器时,会出现错误,因为它需要一个整数而不是字符串。 Also while trying Integer in sharedpreference I can't save the selected item position to it because the putInt needs only a string to put int in. 另外,在sharedpreference中尝试使用Integer时,我无法将所选项目位置保存到其中,因为putInt只需要一个字符串即可将int放入其中。
Sorry for long question but I searched a lot and can't find answer. 抱歉,很长的问题,但我搜索了很多,却找不到答案。 Two more questions please: what is the integer name for spinner
selectedItemPosition
? 请再提出两个问题:微调框
selectedItemPosition
的整数名称是什么? How can I store it to sharedpreference
? 如何将其存储到
sharedpreference
?
Code: 码:
final Spinner spinner = (Spinner) findViewById(R.id.Spinner_Gender);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View itemSelected,
final int selectedItemPosition, long selectedId)
{
int selectedPosition = spinner.getSelectedItemPosition();
Editor editor = mGameSettings.edit();
editor.putInt(myNum,selectedPosition);
editor.commit();
}
}
I don't quite understand what's your issue with SharedPreferences. 我不太了解SharedPreferences的问题。 When you want to save the value you do something like this :
当您想保存值时,可以执行以下操作:
SharedPreferences test = getSharedPreferences("TEST", MODE_MULTI_PROCESS);
Editor editTest = test.edit();
editTest.putInt("key", id_from_spinner);
editTest.commit();
When you want to get the value you do something like this : 当您想获得价值时,可以执行以下操作:
SharedPreferences test = getSharedPreferences("TEST", MODE_MULTI_PROCESS);
int id = test.getInt("key", -1);
if(id != -1) {
//use it in your spinner
} else {
//abort because value was not set
}
要将Int转换为String,可以使用Integer.toString(theInteger)
;要将String转换为int,可以使用Integer.parseInt(theString)
。
You should do something like this 你应该做这样的事情
spinner.setSelection(dataAdapter.getPosition(genderstring));
final Spinner spinner = (Spinner) findViewById(R.id.Spinner_Gender);
spinner.setAdapter(adapter);
spinner.setSelection(mGameSettings.getInt("gender", 0));
spinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View itemSelected,
final int selectedItemPosition, long selectedId)
{
Editor editor = mGameSettings.edit();
editor.putInt("gender", selectedItemPosition);
editor.commit();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.