Skocz do zawartości
haredzak

Jak przypisać objektowi w spinnerze odpowiedni tekst w textView?

    Rekomendowane odpowiedzi

    Napisano (edytowane)

    Witam,

    Pytanko takie: stworzyłem sobie spinnera w którym mam liczby i każdej liczbie chciałbym przypisać tekst w textView.

    Oto mój spinner :

     

    Spinner spinner = (Spinner) findViewById(R.id.spinner) ;
            TextView TextView = (TextView) findViewById(R.id.mojText);
    
    //get the spinner from the xml.
            Spinner dropdown = findViewById(R.id.spinner);
    //create a list of items for the spinner.
            String[] items = new String[]{"1", "2", "3", "4"};
    //create an adapter to describe how the items are displayed, adapters are used in several places in android.
    //There are multiple variations of this, but this is the basic variant.
            ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items);
    //set the spinners adapter to the previously created one.
            dropdown.setAdapter(adapter);
                }

    Następnie mam pomysł taki na przypisanie:

    spinner.setOnItemSelectedListener(this);
               @Override
               public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    
                   switch (position) {
                       case 0:
                           // Whatever you want to happen when the first item gets selected
                           break;
                       case 1:
                           // Whatever you want to happen when the second item gets selected
                           break;
                       case 2:
                           // Whatever you want to happen when the thrid item gets selected
                           break;
    
                   }
               }
    
               @Override
               public void onNothingSelected(AdapterView<?> parent) {
                   // TODO Auto-generated method stub
               }
    
           }
    
       }

    Czy dobrze kombinuje? Jeśli tak to jak teraz wstawić to co chcę do TextView? 
    Pozdrawiam

    Edytowane przez haredzak

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Po prostu: 

    spinner.setOnItemSelectedListener(this);
               @Override
               public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    
                   switch (position) {
                       case 0:
                           textView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 0")
                           break;
                       case 1:
                           textView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 1")
                           break;
                       case 2:
                           textView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 2")
                           break;
    
                   }
               }
    
               @Override
               public void onNothingSelected(AdapterView<?> parent) {
                   // TODO Auto-generated method stub
               }
    
           }
    
       }

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Dziekuje, 

    Mój kod wygląda teraz tak:

         Spinner spinner = (Spinner) findViewById(R.id.spinner) ;
            TextView TextView = (TextView) findViewById(R.id.mojText);
    
    //get the spinner from the xml.
            Spinner dropdown = findViewById(R.id.spinner);
    //create a list of items for the spinner.
            String[] items = new String[]{"1", "2", "3", "4"};
    //create an adapter to describe how the items are displayed, adapters are used in several places in android.
    //There are multiple variations of this, but this is the basic variant.
            ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items);
    //set the spinners adapter to the previously created one.
            dropdown.setAdapter(adapter);
            spinner.setOnItemSelectedListener(this);
        }
    
    
        @Override
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    
            switch (position) {
                case 1:
                    TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 0");
                    break;
                case 2:
                    TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 1");
                    break;
                case 3:
                    TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 2");
                    break;
    
            }
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub
        }

    Linijka pod case 1 wywala błąd  error: illegal character: '\ufeff'
    nie wiem czy linijka kodu jest dobrze wstawiona. Nie mogę uruchomić aplikacji. Co może być źle?

    spinner.setOnItemSelectedListener(this);

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    image.thumb.png.1217b214c1aa437961cec7d5a38fae09.png

    To problem po skopiowaniu kodu wprost z forum. Dodał się \ufeff - na powyższym screenie widoczny jako czerwona kropka. Usuń całą linię i przepisz ją ręcznie. Albo możesz skopiować tą z case 2. Bo tam nie ma tego znaku \ufeff

    Dlaczego on się tutaj dodaje - tego nie wiem :P

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Czy mógłbyś zobaczyć poprawność tego kodu bo dużo błędów wyszło?

    spinner.setOnItemSelectedListener(this);

    error: incompatible types: MainActivity cannot be converted to OnItemSelectedListener

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

    error: method does not override or implement a method from a supertype

    case 1:
        TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 1");

    error: non-static method setText(CharSequence) cannot be referenced from a static context

     

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // TODO Auto-generated method stub

    error: method does not override or implement a method from a supertype

    Przeniosłem jedną linijkę do niższej części kogu próbując metody prób i błędów (zaraz pod @Override)

    @Override
            spinner.setOnItemSelectedListener(this);
    
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    
        switch (position) {
            case 1:
                TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 1");
                break;
            case 2:
                TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 2");
                break;
            case 3:
                TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 3");
                break;
    
        }
    }
    
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // TODO Auto-generated method stub
    }

    Ale dalej występują (2) błędy związane z tą linijką

    error: <identifier> expected

    error: illegal start of type

    Szczerze nie wiem co już wymyślić. Każda pomoc się przyda 
     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Dodaj cały kod z MainActivity. Bo tak po fragmentach ciężko się połapać co jest źle ;) 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    package com.example.textwatcher;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.text.TextWatcher;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            final EditText editText = (EditText) findViewById(R.id.edit_text_id);
            final TextView textView = (TextView) findViewById(R.id.text_view_id);
    
            editText.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) {
                    //i to tutaj powinno wystarczyć
                    textView.setText(editText.getText().toString());
                }
    
                @Override
                public void afterTextChanged(android.text.Editable editable) {
    
                }
    
            });
    
            Spinner spinner = (Spinner) findViewById(R.id.spinner) ;
            TextView TextView = (TextView) findViewById(R.id.mojText);
    
    //get the spinner from the xml.
            Spinner dropdown = findViewById(R.id.spinner);
    //create a list of items for the spinner.
            String[] items = new String[]{"1", "2", "3", "4"};
    //create an adapter to describe how the items are displayed, adapters are used in several places in android.
    //There are multiple variations of this, but this is the basic variant.
            ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items);
    //set the spinners adapter to the previously created one.
            dropdown.setAdapter(adapter);
        }
    
    
        @Override
                spinner.setOnItemSelectedListener(this);
    
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    
            switch (position) {
                case 1:
                    TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 1");
                    break;
                case 2:
                    TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 2");
                    break;
                case 3:
                    TextView.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 3");
                    break;
    
            }
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub
        }
    
    }
    
    
    
    
    
    

    Oto mój kod, wcześniej kod przepisujący tekst

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Poprawiłem tak żeby się uruchamiał ;)

    import android.os.Bundle;
    import android.text.TextWatcher;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.TextView;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            final EditText editText = (EditText) findViewById(R.id.edit_text_id);
            final TextView textView = (TextView) findViewById(R.id.text_view_id);
    
            editText.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) {
                    //i to tutaj powinno wystarczyć
                    textView.setText(editText.getText().toString());
                }
    
                @Override
                public void afterTextChanged(android.text.Editable editable) {
    
                }
    
            });
    
            Spinner spinner = (Spinner) findViewById(R.id.spinner);
            final TextView mojText = (TextView) findViewById(R.id.mojText);
    
            //get the spinner from the xml.
            Spinner dropdown = findViewById(R.id.spinner);
            //create a list of items for the spinner.
            String[] items = new String[]{"1", "2", "3", "4"};
            //create an adapter to describe how the items are displayed, adapters are used in several places in android.
            //There are multiple variations of this, but this is the basic variant.
            ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items);
            //set the spinners adapter to the previously created one.
            dropdown.setAdapter(adapter);
    
    
            spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    
                public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    
                    switch (position) {
                        case 1:
                            mojText.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 1");
                            break;
                        case 2:
                            mojText.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 2");
                            break;
                        case 3:
                            mojText.setText("cokolwiek chcesz żeby wyświetliło się w textView po wybraniu 3");
                            break;
    
                    }
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                    // TODO Auto-generated method stub
                }
    
    
            });
    
    
        }
    }

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x