我有一个名为Spinner_Gender
的微调视图,我制作了数组,数组适配器并制作了onItemSelectedListener
。我想将选定的项目位置保存为共享首选项的整数,我尝试使用带有Editor和putInt的字符串,它保存得很好。但是当使用.setSelection
将保存的数据重新加载到微调器时,它会产生错误,因为它需要整数而不是字符串。同时在共享首选项中尝试Integer时,我无法将所选项目位置保存到它,因为putInt只需要一个字符串来放入int。
很抱歉很长的问题,但我搜索了很多,找不到答案。还有两个问题:
微调器selectedItemPosition
的整数名称是什么?如何将其存储到sharedpreference
?
代码:
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();
}
}
答案 0 :(得分:1)
我不太明白你的SharedPreferences问题是什么。 如果要保存值,可以执行以下操作:
SharedPreferences test = getSharedPreferences("TEST", MODE_MULTI_PROCESS);
Editor editTest = test.edit();
editTest.putInt("key", id_from_spinner);
editTest.commit();
当你想获得价值时,你会做这样的事情:
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
}
答案 1 :(得分:0)
要将int转换为String,您可以使用Integer.toString(theInteger)
并将String转换为int,您可以使用Integer.parseInt(theString)
。
答案 2 :(得分:0)
你应该做这样的事情
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();
}
}