web-dev-qa-db-fra.com

Obtenir le texte des articles sélectionnés spinner?

Comment obtenir le texte de l'article sélectionné?

Je dois obtenir le texte sur l'élément sélectionné dans mon spinner lorsque je clique sur le bouton de sauvegarde. J'ai besoin du texte et non de l'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

Vous devez utiliser l'index et l'adaptateur pour trouver le texte que vous avez

Voir cet exemple de 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

utilisez ceci

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 vous renvoie la valeur entière du tableau. Vous devez récupérer la valeur de chaîne basée sur l'index.

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

Version en ligne:

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

PDATE: Vous pouvez supprimer le casting si vous utilisez le SDK 26 (ou plus récent) pour compiler votre projet.

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

Après avoir réglé l'adaptateur de disque, ce code vous aidera

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

Pour les filateurs basés sur un CursorAdapter:

  • obtenir l'identifiant de l'article sélectionné: spinner.getSelectedItemId()
  • récupérez le nom de l'élément dans votre base de données, par exemple:

    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

Pour ceux qui ont HashMap basé spinner:

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

Si vous êtes dans un fragment, un adaptateur ou une classe autre que les activités principales, utilisez ceci:

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

C'est juste pour des conseils; vous devriez trouver votre id de la vue avant la méthode onClick.

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

Il est également possible d’atteindre de manière plus sûre à l’aide de String.valueOf() comme

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

sans écraser l'application quand tout l'enfer se déchaîne. La raison derrière sa sécurité est d'avoir la capacité de traiter avec les objets null comme argument. La documentation dit

si l'argument est null, une chaîne égale à "null"; sinon, la valeur obj.toString() est renvoyée.

Ainsi, certaines assurances existent en cas d’avoir un vide Spinner par exemple, l’élément actuellement sélectionné doit être converti en String.

0
Student