change of value of textView depending on the selection of a spinner

1

The problem is the following, in the activity I have a textView and a spinner what I'm looking for is that when you select an option in spinner the value of textView change.

This is the code

public class longitud extends AppCompatActivity {

    TextView tex1 , tex2 , tex3 ;

    EditText valor ;

    private TypedArray textview;
    private TextView textView;


    private String[] listOfObjects;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_longitud);


        tex1 = (TextView)findViewById(R.id.tex1longitud);
        tex2 = (TextView)findViewById(R.id.tex2longitud);
        tex3 = (TextView)findViewById(R.id.tex3longitud);

        valor = (EditText)findViewById(R.id.edit1longitud);

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

        textview = getResources().obtainTypedArray(R.array.object_array_3);
        textView = (TextView) findViewById(R.id.textView1logitud);


        Button btconvertir = (Button)findViewById(R.id.botonlongitud1);

        final Spinner spinner = (Spinner)findViewById(R.id.spinnerlongitud);
        ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item, listOfObjects);

        spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAdapter);

        btconvertir.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                switch (spinner.getSelectedItemPosition()){



                    case 0 :

                        /**
                         * case EMPTY TO SPINNER TITTLE
                         * **/

                            break;


                    case 1:

                        /** cm to ft
                         *
                         * formula d(ft)=d(cm)/30.42
                         **/

                        if (!(valor.getText().toString()).isEmpty()){

                           double valor_1= Double.parseDouble(valor.getText().toString());

                            tex1.setText("d(ft)=d(cm)/30.42");
                            tex2.setText("d(ft)="+ valor_1 +"cm/30.42");

                            double resu = valor_1 / 30.42; /** centimeroFtConstante valor de 30.42 **/

                            tex3.setText("d(ft)="+ valor_1 +"cm");
                        }



                        break;



                    case 2 :

                            /** cm to pulg
                             *
                             * formula d(")=d(cm)/2.54 */
                        if (!(valor.getText().toString()).isEmpty()){

                                double valor_1= Double.parseDouble(valor.getText().toString());

                                tex1.setText("d(inc)=d(cm)/2.54 ");
                                tex2.setText("d(inc)="+valor_1+"cm/2.54 ");


                                double resu1 = valor_1/2.54;

                                tex3.setText("d(inc)="+resu1);


                        }


                        break;



                    case 3 :

                        /**
                         * cm to mm
                         *
                         * formula d(mm)=d(cm)*10
                         *
                         * */

                        if (!(valor.getText().toString()).isEmpty()){

                                double valor_1= Double.parseDouble(valor.getText().toString());

                                 tex1.setText("d(mm)=d(cm)*10");
                                 tex2.setText("d(mm)="+valor_1+"cm*10");

                                 double resu1 = valor_1*10;

                                 tex3.setText("d(mm)="+resu1);


                        }



                        break;


                    case 4:

                        /**
                         * ft to cm
                         *
                         * formula d(cm)=d(ft)*30.48
                         * */

                        if (!(valor.getText().toString()).isEmpty()){

                            double valor_1= Double.parseDouble(valor.getText().toString());

                                tex1.setText("d(cm)=d(ft)*30.48");
                                tex2.setText("d(cm)="+valor_1+"ft*30.48");

                                double resu1 = valor_1 * 30.48;

                                tex3.setText("d(cm)="+resu1);





                        }


                        break;


                    case 5 :

                        /**
                         * feet to mm
                         *
                         * formula d(mm)=d(ft)*304.8
                         * */


                        if (!(valor.getText().toString()).isEmpty()){

                            double valor_1= Double.parseDouble(valor.getText().toString());

                                tex1.setText("d(mm)=d(ft)*304.8");
                                tex2.setText("d(mm)="+valor_1+"ft*304.8");

                                double resu1 = valor_1*305.8;

                                tex3.setText("d(mm)="+resu1);


                        }


                        break;

                    case 6:

                        /**
                         * feet to inches
                         *
                         * formula d(inch)=d(ft)*12
                         * */

                        if (!(valor.getText().toString()).isEmpty()){

                            double valor_1= Double.parseDouble(valor.getText().toString());

                            tex1.setText("d(inch)=d(ft)*12");
                            tex2.setText("d(inch)="+valor_1+"ft*12");

                            double resu1 = valor_1*12;

                            tex3.setText("d(inch)="+resu1);


                        }

                        break;

                    case 7 :

                        if (!(valor.getText().toString()).isEmpty()){

                            double valor_1= Double.parseDouble(valor.getText().toString());
                        }

                        break;

                    default:


                        break;
                }
            }
        });



        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                textView.setText(textview.getResourceId(spinner.getSelectedItemPosition(), -1));


            }

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

            }
        });

    }
}
    
asked by Liantony Pozo 16.04.2017 в 16:09
source

3 answers

1

Hello try making the following change in your code:

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

        //aqui ya teniendo la posicion del objeto seleccionado vamos a buscar su valor a la lista que cargo el spinner :)
        textView.setText( listOfObjects[position] );


    }

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

    }
});

I hope it serves you. Greetings

    
answered by 16.04.2017 в 17:48
1

Instead of an OnClickListener on the button,

 btconvertir.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (spinner.getSelectedItemPosition()){

You must set up a OnItemSelectedListener on the spinner:

    final Spinner spinner = (Spinner)findViewById(R.id.spinnerlongitud);
    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item, listOfObjects);

     spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
   spinner.setAdapter(spinnerAdapter);


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

           switch(position){
              case 0:

                    /**
                     * case EMPTY TO SPINNER TITTLE
                     * **/

               break;
              case 1:

                    /** cm to ft
                     *
                     * formula d(ft)=d(cm)/30.42
                     **/

                    if (!(valor.getText().toString()).isEmpty()){

                       double valor_1= Double.parseDouble(valor.getText().toString());

                        tex1.setText("d(ft)=d(cm)/30.42");
                        tex2.setText("d(ft)="+ valor_1 +"cm/30.42");

                        double resu = valor_1 / 30.42; /** centimeroFtConstante valor de 30.42 **/

                        tex3.setText("d(ft)="+ valor_1 +"cm");
                    }

               break;
              case 2:

       /** cm to pulg
                             *
                             * formula d(")=d(cm)/2.54 */
                        if (!(valor.getText().toString()).isEmpty()){

                                double valor_1= Double.parseDouble(valor.getText().toString());

                                tex1.setText("d(inc)=d(cm)/2.54 ");
                                tex2.setText("d(inc)="+valor_1+"cm/2.54 ");


                                double resu1 = valor_1/2.54;

                                tex3.setText("d(inc)="+resu1);


                        }


               break;
              case 3:

               ...
               ...

               break;
              case 4:

               ...
               ...

               break;
              default:

                break;

           }        

        }

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

        }
    });
    
answered by 16.04.2017 в 19:42
0

I found the solution to my problem. It worked like this:

private String[]  listOfObjects2;

listOfObjects2 = getResources().getStringArray(R.array.object_array_3);

textView.setText( listOfObjects2[position] );
    
answered by 17.04.2017 в 18:39