如何在android中维护微调器状态

san*_*jay 2 android android-spinner

我正在做一个Android应用程序,它可以从Web服务获取数据并将其加载到微调器中.当我进入某个屏幕并返回时,我需要保持微调器的选定数据状态.例如,如果我从Web服务获取数据并将其1.apple 2.orange 3.grapes加载到微调器中,那么我选择orange.当我转到其他屏幕并返回时,选定的微调器数据应为orange.但它再次将数据从服务器加载到微调器中.有人可以帮我解决这个问题吗?

我的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //...

    if (Constants.SPINNER != null ) {
        spinner.setSelection( Constants.SPINNER);
    } else {
        //WebCall here for getting data
    }

    //...

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent,
            View view, int arg2, long arg3) {
                Constants.SPINNER = spinner.getSelectedItemPosition();
Run Code Online (Sandbox Code Playgroud)

Constant课堂上:

public static Integer SPINNER="";
Run Code Online (Sandbox Code Playgroud)

Mak*_*ple 6

您可以使用

  spinner.getSelectedItemPosition(); 
Run Code Online (Sandbox Code Playgroud)

这将返回给你一个你可以保存的int

  prefEdit.putInt(); 
Run Code Online (Sandbox Code Playgroud)

然后当你想重新加载已保存的所有内容时,你只需要调用

  spinner.setSelection(prefs.getInt("key", default));
Run Code Online (Sandbox Code Playgroud)

或者试试这个

保存:

  int selectedPosition = yourSpinner.getSelectedItemPosition()
  editor.putInt("spinnerSelection", selectedPosition);
  editor.commit();
Run Code Online (Sandbox Code Playgroud)

载入:

yourSpinner.setSelection(prefs.getInt("spinnerSelection",0));
Run Code Online (Sandbox Code Playgroud)

如果您使用的是数组,它应该像这样改变

 String selectedString = yourArray[yourSpinner.getSelectedItemPosition()];
   editor.putString("spinnerSelection", selectedString);
   editor.commit();
Run Code Online (Sandbox Code Playgroud)

检查array [i]对存储在prefs.s中的值如果你使用ArrayList而不是这个部分可以在没有循环的情况下通过调用来完成

 ArrayList.indexOf(prefs.getString("spinnerSelection", "");
Run Code Online (Sandbox Code Playgroud)

当你提交显示所有上面的数组项目消失.没有人进入阵列.