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

标签 android android-spinner

<分区>

我正在做一个 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

            }
        });

关于android - 如何在android中维护微调器状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358563/

相关文章:

java - 如何在 ListView 中传递所选行的 id 并在另一个 Activity 中获取行的值,值存储在 sqlite 数据库中

android - 不知何故,我的 Activity 无法扩展 MapActivity,为什么?

android - 在 Android Spinner 中设置文本颜色

android - 用多行填充微调项

android - StandOutWindow Spinner 无法添加窗口 -- 标记为空

android - fragment Android 应用程序中的 fragment

java - 将 TimePickerDialog 设置为使用 15 分钟间隔

android - 将值从 Javascript *可靠地* 返回到 Webview

android - Spinner 未填充 ArrayAdapter

java - Android Spinner 不会启动 OnItemSelected 并且当前选定的项目不会显示在 Spinner 中