我正在做一个 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="";
您可以按照以下步骤操作:
您需要保存微调器的状态,这样会对您有所帮助。
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
}
});