如何保持Android的微调状态(How to maintain spinner state in

2019-09-01 21:20发布

我在做一个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="";

Answer 1:

您可以使用

  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", ""); 

当您提交显示所有上面数组项了。 显示没有一个成阵列。



Answer 2:

您可以按照以下步骤操作:

您需要保存微调的状态,所以这将是对您有所帮助。

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

            }
        });


Answer 3:

当你“去一些其他的屏幕”,你应该通过一个新的活动这么做。 然后,完成新的活动之后,微调评选活动将恢复,并选择状态会开始前的第二个活动,因为它是。



Answer 4:

  • 确保你没有击中的onResume()的活动的web服务。
  • 确保你没有被调用完成(继续下一个活动之前完成当前活动)。
  • 并检查数据是否可用或者没有网络到来之前(在这里你能避免不必要的网上点击)


文章来源: How to maintain spinner state in android