简体   繁体   English

从微调器中选择保存项目的位置

[英]get selected save item position from Spinner

I want to store the spinner position. 我想存储微调器位置。 This allows me to restore the spinner when the application is opened. 这使我可以在打开应用程序时还原微调器。

Currently, my code isn't working. 目前,我的代码无法正常工作。 It's saving the data, but when I open the application, the last item I clicked does not open. 它正在保存数据,但是当我打开应用程序时,我单击的最后一项没有打开。

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    refRoomsNew.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


         for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                    spinner = (Spinner)findViewById(R.id.spinnerMain);
 ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item, RoomsNew);
                            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
               spinner.setAdapter(dataAdapter);


      String data = snapshot.getValue(String.class);
                            RoomsNew.add(data);
                            addListenerOnSpinnerItemSelection();

                            Integer spinnerNew = prefs.getInt("Spinner", 0);

                            // Log.d("Spinner", spinnerNew);
                            if(spinnerNew != null ) {
                                Log.d("spinnerNew", String.valueOf(spinnerNew));
                                spinner.setSelection(spinnerNew);
                            }

                        }
                    }
    }
    @Override
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {


        SharedPreferences.Editor editor = getSharedPreferences(MyPREFERENCES, MODE_PRIVATE).edit();
        editor.putInt("Spinner", indexValue);
        editor.apply();
    }

You have to set the position right after setting the adater. 设置适配器后,您必须立即设置位置。 Something like: 就像是:

spiner.setAdater();
SharedPreferences prefs = getSharedPreferences("...",Context.MODE_PRIVATE);
// If "Spinner" is not set, it will assign 0
Integer initialValue = prefs.getInt("Spinner", 0);
spinner.setSelection(initialValue);

Then, during onItemSelected , you just need to store the value: 然后,在onItemSelected期间,您只需要存储值:

@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    SharedPreferences.Editor editor = getSharedPreferences(MyPREFERENCES, MODE_PRIVATE).edit();
    editor.putInt("Spinner", position);
    editor.apply();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM