我正在做一个可以从网络服务获取数据的Android应用程序。将它加载到微调器中。当我进入某个屏幕时,我需要保持微调器的选定数据状态。回来。例如,如果我从网络服务获取数据为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();
在Constant
课程中:
public static Integer SPINNER="";
答案 0 :(得分:6)
您可以使用
spinner.getSelectedItemPosition();
将返回一个你可以用
保存的intprefEdit.putInt();
然后当你想重新加载已保存的所有内容时,你只需要调用
spinner.setSelection(prefs.getInt("key", default));
或尝试类似
保存:
int selectedPosition = yourSpinner.getSelectedItemPosition() editor.putInt("spinnerSelection", selectedPosition); editor.commit();
加载:
yourSpinner.setSelection(prefs.getInt("spinnerSelection",0));
如果您使用的是数组,则应该像这样更改
String selectedString = yourArray[yourSpinner.getSelectedItemPosition()]; editor.putString("spinnerSelection", selectedString); editor.commit();
根据存储在prefs.s中的值检查array [i]如果您使用ArrayList,则可以通过调用
来完成此部分而无需循环ArrayList.indexOf(prefs.getString("spinnerSelection", "");
当你提交show所有上面的数组项时都没了。没有人进入阵列。
答案 1 :(得分:1)
您可以按照以下步骤操作:
您需要保存微调器的状态,这样才对您有所帮助。
1。)在创建微调器对象
后应用它sectionNameSpinner.setSelection(getPersistedItem());
2。)根据您创建这些方法以保存微调器选定项目的状态
private int getPersistedItem() {
String keyName = makePersistedItemKeyName();
return PreferenceManager.getDefaultSharedPreferences(this).getInt(keyName, 0);
}
protected void setPersistedItem(int position) {
String keyName = makePersistedItemKeyName();
PreferenceManager.getDefaultSharedPreferences(this).edit().putInt(keyName, position).commit();
}
private String makePersistedItemKeyName() {
return currentUserName + "_your_key";
}
3。)在微调器选择改变时设置其状态:
sectionNameSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View view, int position, long itemId) {
setPersistedItem(position);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
答案 2 :(得分:0)
当你“转到其他屏幕”时,你应该通过一项新活动这样做。然后,在完成新活动后,微调器选择活动将恢复,选择状态将与开始第二个活动之前一样。
答案 3 :(得分:0)