Jak uzyskać wartość wybranego elementu Spinner na ciąg?

81

Mam 5 Spinnerów. Aby to podsumować.

To jest Spinner w xml

<Spinner
            android:id="@+id/text_interested"
            android:layout_span="2"
            android:layout_width="wrap_content"
            android:layout_height="60px"
            android:entries="@array/interestedarrays"
            android:prompt="@string/interestedprompt" />

To jest Spinner w Javie

submitbtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
interested.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        public void onItemSelected(
                                AdapterView<?> adapterView, View view,
                                int i, long l) {
                            interesting = interested.getItemAtPosition(i).toString();
                        }

                        public void onNothingSelected(
                                AdapterView<?> adapterView) {

                        }
                    });
    }
});

Wyjaśnienie tutaj:

Strona ma przycisk. Po naciśnięciu ten przycisk odczyta dane z pokrętła. Sprawdziłem wyjście tym

System.out.println(interested.getItemAtPosition(i).toString());

Nic mi to nie dało, nawet zerowe.

Jak pobrać wartość i ją napisać?

Alan Lai
źródło
Jestem pewien, że chcesz wybrać przedmiot z obrotnicy za każdym razem, gdy użytkownik kliknie przycisk
Paresh Mayani
Ustaw setOnItemSelectedListener na zewnątrz onClick swojego przycisku, a wewnątrz metody Onclick użyj tego Interest.getSelectedItem (). ToString ();
KK_07k11A0585
dzięki, mój błąd został wprowadzony słuchacza wewnątrz przycisku słuchacza dlatego nie reagują
Alan Lai
1
witamy :) zapoznaj się z demonstracjami API ... możesz tam znaleźć lepsze przykłady
KK_07k11A0585

Odpowiedzi:

225

Spróbuj tego:

String text = mySpinner.getSelectedItem().toString();

W ten sposób możesz uzyskać wartość dla różnych Spinnerów.

Bhavin
źródło
27
String Text = mySpinner.getSelectedItem().toString();

LUB

mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        Object item = parent.getItemAtPosition(position);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});
santoshpatmca
źródło
Ale jak zdobyć przedmiot 0 ?!
Alok Rajasukumaran
11

Możesz zdobyć wybrany przedmiot z Spinner za pomocą,

interested.getSelectedItem().toString();
Lalit Poptani
źródło
7

Jeśli Twój Spinner został wypełniony kursorem SQLite, rozwiązanie jest następujące:

Spinner mySpin = (Spinner) findViewById(R.id.myspin);
mySpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
           SQLiteCursor item = (SQLiteCursor) parent.getItemAtPosition(position);
           String value = String.valueOf(item.getString(0));
           Toast.makeText(getApplicationContext(), "The option is:" + value , Toast.LENGTH_SHORT).show(); 
 }

PS: In item.getString(0)-> 0 to indeks kolumny kursora, którą chcesz uzyskać.

Mduarth
źródło
Działa świetnie. Jak używać „value” poza elementem członkowskim onItemSelected?
MarkT
6

Spróbuj tego

 final Spinner cardStatusSpinner1 = (Spinner) findViewById(R.id.text_interested);
    String cardStatusString;
    cardStatusSpinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent,
                View view, int pos, long id) {
            cardStatusString = parent.getItemAtPosition(pos).toString();
        }

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

        }
    });

 final Button saveBtn = (Button) findViewById(R.id.save_button);
    saveBtn .setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            System.out.println("Selected cardStatusString : " + cardStatusString ); //this will print the result
        }
    });
sush
źródło
6

Kup wybrany przedmiot z Kotlin:

spinner.selectedItem.toString()
Westy92
źródło
5

Oprócz sugerowanych,

String Text = mySpinner.getSelectedItem().toString();

Możesz to zrobić,

String Text = String.valueOf(mySpinner.getSelectedItem());
Maks
źródło
3

Gdy wybierzesz dowolną wartość z przędzarki, otrzymasz wybraną wartość,

interested.getSelectedItem().toString();
Andy
źródło
3

Myślę, że chcesz wybrać wybrany element przędzarki po kliknięciu przycisku.

Spróbuj getSelectedItem () :

spinner.getSelectedItem()
ngesh
źródło
2

Najlepszym sposobem na to jest: -

String selectedItem = spinner.getSelectedItem().toString();

możesz skierować dokumenty tutaj: Spinners

Deepak Vardhan
źródło
2

Spróbuj tego

sp1 = String.valueOf(spinner.getSelectedItem());
Thasreef Mogral
źródło
2

Ponieważ najnowszym językiem dla Android Development jest Kotlin. Oto jak to robimy w Kotlinie przy użyciu obiektu Anonymous.

spinnerName?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
    override fun onNothingSelected(parent: AdapterView<*>?) {
       println("Nothing Selected")
    }

    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
       val selectedString = yourList[position]
    }

}
Hanny
źródło
Nikt tu nie pytał o Kotlin.
user3099225
1

Poprzez implementację SpinnerAdapter dla używanego przeze mnie obiektu adaptera interested.getItem(i).toString()

GedankenNebel
źródło
0
    spinnerType = (AppCompatSpinner) findViewById(R.id.account_type);
    spinnerType.setPrompt("Select Type");

    spinnerType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            TypeItem clickedItem = (TypeItem) parent.getItemAtPosition(position);
            String TypeName = clickedItem.getTypeName();
            Toast.makeText(AddAccount.this, TypeName + " selected", Toast.LENGTH_SHORT).show();
        }

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

        }
    });
Malith Ileperuma
źródło