刷新后如何使微调器显示先前选择的项目?

时间:2016-08-05 08:04:23

标签: android spinner selecteditem

我所拥有的是一项设置活动,我通过微调器选择语言。当我将其更改为俄语时,语言会发生变化,但是当我再次打开“设置”菜单时,微调器上的所选项目是第一项(英语)而不是当前项目(俄语)。

这是我的微调器

Resources res = getResources();
language = res.getStringArray(R.array.languages_arrays);
Spinner spinner = (Spinner) findViewById(R.id.toolbar_spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, R.layout.spinner_item_dropdown,
             language);

spinner.setAdapter(adapter);

我需要在微调器中更改以显示所选语言?

3 个答案:

答案 0 :(得分:1)

如果要设置微调器的上一个选定项目,则必须存储所选项目,然后设置选择: 这是一个例子,希望我能够获得我之前选择的项目,然后从他的阵列适配器中获取该项目的位置

  SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String language = preferences.getString("language", "");
        if(!language.equalsIgnoreCase(""))
        {
            int spinnerPosition = arrayAdapter.getPosition(language);
            spinner.setSelection(spinnerPosition);

        }

您可以按如下方式存储数据:

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
       {

 SharedPreferences.Editor editor = preferences.edit();
 editor.putString("language",spinner.getSelectedItem().toString(););
 editor.apply();



        }


        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

答案 1 :(得分:0)

为此你需要以编程方式设置微调器值

for (int i=0 ;i<languages.length;i++)
                {
                    if(languages[i] = "RUSSIAN")//change it according to ur prrefence
                   spinner.setSelection(i);
                }

答案 2 :(得分:0)

您必须在应用中的某处保存以前选定的值。再次打开设置时,检查该值并在数组中查找它的位置。一旦找到它的位置,就将Spinner选择设置到该位置,如下所示:

spinner.setSelection(position_of_selected_item);