event onclick on a spinner

0

I'm doing an activity that uses a spinner to enable several options but within the spinner I want to put an event onclick to communicate with a button in the activity and this performs an operation.

This is the code.

public class ejemolo extends AppCompatActivity {

    String[] Items = {
            "Dc amps a Kw",
            "Ac una fase amp a kw ",
            "Ac trifasica amps a kw (linia a linea de voltaje)",
            "Ac trifasica amps a kw (linia a voltaje neutral)",


    };

    Spinner s1;

    private String[] listOfObjects;


    EditText ampEditText , voltageEditText , powerfactorEditText  ;

    TextView text1 , text2 , text3, text4 ;

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ejemolo);




        FloatingActionButton buttonback = (FloatingActionButton)findViewById(R.id.floatingActionButtonback);
        buttonback.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {
                Intent intent  = new Intent(v.getContext() , Weight.class);
                startActivityForResult(intent ,0);
            }
        });


        FloatingActionButton buttonhome = (FloatingActionButton)findViewById(R.id.floatingActionButtonhome);
        buttonhome.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {
                Intent intent  = new Intent(v.getContext() , MainActivity.class);
                startActivityForResult(intent ,0);
            }
        });



        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


        s1 = (Spinner) findViewById(R.id.spinnerAmp);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, Items);

        s1.setAdapter(adapter);


        ampEditText = (EditText)findViewById(R.id.ampEditText);
        voltageEditText = (EditText)findViewById(R.id.voltageEditText);


        text1 = (TextView)findViewById(R.id.prueba1);
        text2 = (TextView)findViewById(R.id.prueba2);




        powerfactorEditText = (EditText)findViewById(R.id.powerfactorEditText);



        //text1=(TextView)findViewById(R.id.tonsTextResult1);
        //text2=(TextView)findViewById(R.id.tonsTextResult2);


        listOfObjects = getResources().getStringArray(R.array.object_array4);

//        final Spinner spinner = (Spinner)findViewById(R.id.spinnerAmp);


        final android.icu.text.DecimalFormat decimals = new android.icu.text.DecimalFormat("0.00"); /** la cantidad de digitos decimales que se muestra */


       // ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item, listOfObjects);




        s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                switch (position) {


                    case 0 :



                            int indzex = s1.getSelectedItemPosition();


                        powerfactorEditText.setVisibility(View.GONE);



                        final  EditText editText = (EditText)findViewById(R.id.voltageEditText);
                        final  EditText editText2 = (EditText)findViewById(R.id.ampEditText);






                    case 1:



                           int index = s1.getSelectedItemPosition();


                        powerfactorEditText.setVisibility(View.VISIBLE);






                        break;

                }


            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });






    }





}
    
asked by Liantony Pozo 13.05.2017 в 05:17
source

2 answers

2

This event I think can help you, if I have not misunderstood what you want is to do some operation when you select something in the spinner right?

This example shows a simple Toast but it's a matter of replacing said Toast with whatever you want.

spnOpciones.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> spn,
                               android.view.View v,
                               int posicion,
                               long id) {
        Toast.makeText(spn.getContext(), "Has seleccionado " +
                       spn.getItemAtPosition(posicion).toString(),
                       Toast.LENGTH_LONG).show();
    }
    public void onNothingSelected(AdapterView<?> spn) {
    }
});
    
answered by 13.05.2017 в 12:31
0

This way I could do both things hide the editText and the operation

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

            switch (position) {


                case 0 :



                        int indzex = s1.getSelectedItemPosition();

                         powerfactorEditText.setVisibility(View.GONE);






                    ampEditText.addTextChangedListener(new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                        }

                        @Override
                        public void onTextChanged(CharSequence s, int start, int before, int count) {

                        }

                        @Override
                        public void afterTextChanged(Editable s) {


                            if (!(ampEditText.getText().toString()).isEmpty() && !(voltageEditText.getText().toString()).isEmpty() ){


                                double value = Double.parseDouble(ampEditText.getText().toString());
                                double value2= Double.parseDouble(voltageEditText.getText().toString());


                                double result = value * value2 ;


                                text1.setText(decimals.format(result));





                            }



                        }
                    });
    
answered by 13.05.2017 в 22:27