我在做一个Android应用程序可以从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();
在Constant
类:
public static Integer SPINNER="";
您可以使用
spinner.getSelectedItemPosition();
会回报给你一个int,你可以用保存
prefEdit.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.if通过调用使用ArrayList代替这部分可以在没有环来实现价值
ArrayList.indexOf(prefs.getString("spinnerSelection", "");
当您提交显示所有上面数组项了。 显示没有一个成阵列。
您可以按照以下步骤操作:
您需要保存微调的状态,所以这将是对您有所帮助。
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
}
});
当你“去一些其他的屏幕”,你应该通过一个新的活动这么做。 然后,完成新的活动之后,微调评选活动将恢复,并选择状态会开始前的第二个活动,因为它是。