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)
您可以使用
Run Code Online (Sandbox Code Playgroud)spinner.getSelectedItemPosition();
这将返回给你一个你可以保存的int
Run Code Online (Sandbox Code Playgroud)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();
检查array [i]对存储在prefs.s中的值如果你使用ArrayList而不是这个部分可以在没有循环的情况下通过调用来完成
Run Code Online (Sandbox Code Playgroud)ArrayList.indexOf(prefs.getString("spinnerSelection", "");
当你提交显示所有上面的数组项目消失.没有人进入阵列.