wake-up-neo.com

Holen Sie sich Spinner ausgewählte Elemente Text?

Wie bekomme ich den Text eines ausgewählten Elements?

Ich muss den Text für das in meinem Drehfeld ausgewählte Element erhalten, wenn ich auf die Schaltfläche Speichern klicke. Ich brauche den Text nicht den Index.

342
Harinder
Spinner spinner = (Spinner)findViewById(R.id.spinner);
String text = spinner.getSelectedItem().toString();
715
Farhan
TextView textView = (TextView)mySpinner.getSelectedView();
String result = textView.getText().toString();
37
Ace

Sie müssen den Index und den Adapter verwenden, um den Text herauszufinden, den Sie haben

Siehe dieses Beispiel für Spinner

public class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
      Toast.makeText(parent.getContext()), "The planet is " +
          parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
    }

    public void onNothingSelected(AdapterView parent) {
      // Do nothing.
    }
}
33
ccheneson

benutze das

import Java.util.ArrayList;   
import Android.app.Activity;
import Android.content.Intent;
import Android.os.Bundle;
import Android.text.Editable;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.AdapterView;
import Android.widget.AdapterView.OnItemSelectedListener;
import Android.widget.ArrayAdapter;
import Android.widget.Button;
import Android.widget.EditText;
import Android.widget.Spinner;
import Android.widget.Toast;

public class dynamic_spinner_main extends Activity {

    private Spinner m_myDynamicSpinner;
    private EditText m_addItemText;
    private ArrayAdapter<CharSequence> m_adapterForSpinner;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_spinner);

        ///////////////////////////////////////////////////////////////
        //grab our UI elements so we can manipulate them (in the case of the Spinner)
        //    or add listeners to them (in the case of the buttons)
        m_myDynamicSpinner = (Spinner)findViewById(R.id.dynamicSpinner);        
        m_addItemText = (EditText)findViewById(R.id.newSpinnerItemText);
        Button addButton = (Button)findViewById(R.id.AddBtn);
        Button clearButton = (Button)findViewById(R.id.ClearBtn);

        ////////////////////////////////////////////////////////////////
        //create an arrayAdapter an assign it to the spinner
        m_adapterForSpinner = new ArrayAdapter(this, Android.R.layout.simple_spinner_item);
        m_adapterForSpinner.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);        
        m_myDynamicSpinner.setAdapter(m_adapterForSpinner);
        m_adapterForSpinner.add("gr");        
        m_myDynamicSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
                // your code here
                Intent mIntent=new Intent(dynamic_spinner_main.this,sampleLocalization.class);
                mIntent.putExtra("lang", m_myDynamicSpinner.getItemIdAtPosition(position));
                System.out.println("Spinner value...."+m_myDynamicSpinner.getSelectedItem().toString());
                startActivity(mIntent);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parentView) {
                // your code here
            }

        });
        ////////////////////////////////////////////////////////////////
        //add listener for addButton
        addButton.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {               
                addNewSpinnerItem();
            }                   
        });

        ////////////////////////////////////////////////////////////////
        //add listener for addButton
        clearButton.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                clearSpinnerItems();
            }           
        });  
    }

    private void addNewSpinnerItem() {
        CharSequence textHolder = "" + m_addItemText.getText();
        m_adapterForSpinner.add(textHolder);
    }

    private void clearSpinnerItems() {
        m_adapterForSpinner.clear();
        m_adapterForSpinner.add("dummy item");
    }       
}

main_spinner.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">

    <EditText Android:layout_height="wrap_content" 
            Android:layout_margin="4px" 
            Android:id="@+id/newSpinnerItemText" 
            Android:layout_width="fill_parent"></EditText>
    <Button Android:layout_height="wrap_content" 
            Android:id="@+id/AddBtn" 
            Android:layout_margin="4px" 
            Android:layout_width="fill_parent" 
            Android:text="Add To Spinner"></Button>
    <Button Android:layout_height="wrap_content" 
            Android:id="@+id/ClearBtn" 
            Android:layout_margin="4px" 
            Android:layout_width="fill_parent" 
            Android:text="Clear Spinner Items"></Button>
    <Spinner Android:layout_height="wrap_content" 
            Android:id="@+id/dynamicSpinner" 
            Android:layout_margin="4px" 
            Android:layout_width="fill_parent"></Spinner>
</LinearLayout>
14
Jazz

Spinner gibt den ganzzahligen Wert für das Array zurück. Sie müssen den Zeichenfolgenwert basierend auf dem Index abrufen.

Spinner MySpinner = (Spinner)findViewById(R.id.spinner);
Integer indexValue = MySpinner.getSelectedItemPosition();
12
Shaista Naaz
spinner_button.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?>arg0, View view, int arg2, long arg3) {

            String selected_val=spinner_button.getSelectedItem().toString();

            Toast.makeText(getApplicationContext(), selected_val ,
                    Toast.LENGTH_SHORT).show();
        }

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

        }
    });

}
10
Irfan Ali

Einzeilige Version:

String text = ((Spinner)findViewById(R.id.spinner)).getSelectedItem().toString();

PDATE: Sie können das Casting entfernen, wenn Sie SDK 26 (oder neuer) zum Kompilieren Ihres Projekts verwenden.

String text = findViewById(R.id.spinner).getSelectedItem().toString();
9
Miroslav Hrivik
TextView textView = (TextView) spinActSubTask.getSelectedView().findViewById(R.id.tvProduct);

String subItem = textView.getText().toString();
7
user2294100

Nach dem Einstellen des Spinner-Adapters hilft dieser Code

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            Toast.makeText(getApplicationContext(), "This is " +
                    adapterView.getItemAtPosition(i).toString(), Toast.LENGTH_LONG).show();

            try {
                //Your task here
            }catch (Exception e)
            {
                e.printStackTrace();
            }
        }

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

        }
    });
5
Ahsan

Für Spinner basierend auf einem CursorAdapter:

  • holen Sie sich die ausgewählte Artikel-ID: spinner.getSelectedItemId()
  • rufen Sie den Artikelnamen aus Ihrer Datenbank ab, zum Beispiel:

    public String getCountryName(int pId){
        Cursor cur = mDb.query(TABLE, new String[]{COL_NAME}, COL_ID+"=?", new String[]{pId+""}, null, null, null);
        String ret = null;
        if(cur.moveToFirst()){
            ret = cur.getString(0);
        }
        cur.close();
        return ret;
    }
    
3
Yar

Für diejenigen mit HashMap basiertem Spinner:

((HashMap)((Spinner)findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString();

Wenn Sie sich in einem Fragment, einem Adapter oder einer Klasse befinden, bei denen es sich nicht um Hauptaktivitäten handelt, verwenden Sie Folgendes:

((HashMap)((Spinner)YourInflatedLayoutOrView.findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString();

Es ist nur zur Orientierung; Sie sollten Ihre Ansichts-ID vor der onClick-Methode finden.

1
Arash
Spinner spinner = (Spinner) findViewById(R.id.yourspinnerid);
String text = spinner.getSelectedItem().toString();
0
Fahad Jadun

Es kann auch auf eine etwas sicherere Weise erreicht werden, indem String.valueOf() verwendet wird

Spinner sp = (Spinner) findViewById(R.id.sp_id);
String selectedText = String.valueOf(sp.getSelectedItem());

ohne die App zum Absturz zu bringen, wenn die Hölle losbricht. Der Grund für die Sicherheit ist, dass null Objekte als Argument verwendet werden können. Die Dokumentation sagt

wenn das Argument null ist, dann eine Zeichenfolge gleich "null"; Andernfalls wird der Wert von obj.toString() zurückgegeben.

So gibt es eine Versicherung für den Fall, dass ein leerer Spinner vorhanden ist, der für den aktuell ausgewählten Artikel in String konvertiert werden muss.

0
Student