我需要在首选项中保存我的微调器的值或位置,当用户访问设置活动时将其显示为选中。但我让troubles.My prob在for中获取项目位置,并将其作为列表中的选定项使用。
微调代码
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>发布于 2014-02-01 04:24:55
这可能会有帮助
if(spinner.equals(parent.getSelectedItem().toString())){将其更改为
if(item.equals(parent.getSelectedItem().toString())){如果我没弄错你的问题的话..
发布于 2014-06-22 05:50:23
我认为获取在微调器中选择的项的更好方法是在onItemSelected方法中,使用position变量来获取该位置的项。
item = parent.getItemAtPostion(position).toString();然后,当用户使用此微调器导航回视图时,您可以通过以下方法设置微调器的位置:首先在适配器中找到项所在的位置(因为您正在使用ArrayAdapter<CharSequence>),然后设置微调器的位置。
String spinner=PreferenceManager
.getDefaultSharedPreferences(getBaseContext())
.getString("spinner","");
int position = adapter.getPosition(item);
spinner.setSelection(position);发布于 2014-02-01 14:47:08
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()
https://stackoverflow.com/questions/21489212
复制相似问题