我需要在prefs中保存我的Spinner的值或位置,并且当用户访问设置活动时将其显示为已选中。但是我遇到了麻烦。我的问题在于获取项目位置并在列表中选择使用它。
Spinner代码
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.spinner, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
item = parent.getSelectedItem().toString();
Log.v("SPINNER", item);
//SAVE PREFS WITH SPINNER VALUE
SharedPreferences prefs;
prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor prefEditor = prefs.edit();
prefEditor.putString("spinner",item);
prefEditor.commit();
//RETREIVE SPINNER VALE PREFS
String spinner=PreferenceManager
.getDefaultSharedPreferences(getBaseContext())
.getString("spinner","");
//CHECK
for(int i=0;i<9;i++)
if(spinner.equals(parent.getSelectedItem().toString())){
spinner.setSelection(parent.getItemAtPosition(position));
break;
}
}
public void onNothingSelected(AdapterView<?> parent) {
//String str = "Selecciona";
}
});
XML
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="spinner">
<item>10:00</item>
<item>11:00</item>
<item>12:00</item>
<item>13:00</item>
<item>14:00</item>
<item>15:00</item>
<item>16:00</item>
<item>17:00</item>
<item>18:00</item>
<item>19:00</item>
<item>20:00</item>
<item>21:00</item>
<item>22:00</item>
<item>23:00</item>
<item>24:00</item>
</string-array>
</resources>
答案 0 :(得分:1)
这可能会有所帮助
if(spinner.equals(parent.getSelectedItem().toString())){
将其更改为
if(item.equals(parent.getSelectedItem().toString())){
如果我理解你的问题......
答案 1 :(得分:1)
我认为获取在微调器中选择的项目的更好方法是在onItemSelected方法中,使用位置变量来获取该位置的项目。
item = parent.getItemAtPostion(position).toString();
然后,当用户使用此微调器导航回视图时,您可以通过首先找到项目所在的位置(因为您在适配器中使用ArrayAdapter<CharSequence>
)然后设置微调器的位置设置微调器从适配器所说的位置开始的位置。
String spinner=PreferenceManager
.getDefaultSharedPreferences(getBaseContext())
.getString("spinner","");
int position = adapter.getPosition(item);
spinner.setSelection(position);
答案 2 :(得分:0)
for循环和if条件之间没有有用的关系:
for(int i=0;i<9;i++)
if(spinner.equals(parent.getSelectedItem().toString())){
spinner.setSelection(parent.getItemAtPosition(position));
[应该使用循环中的“i”,如parent.getItemAtPosition(i).toString()]