Dönücü seçilen öğeler metnini al?


370

Dönücü seçilen öğenin metni nasıl alınır?

Kaydet düğmesine tıkladığımda, çeviricimde seçilen öğenin metnini almam gerekiyor. metni değil dizin gerekir.

Yanıtlar:


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


Kodu kullandım ve sonuç ben hata ayıklama modunda ne gerek değil buldum bana {supliers = VITA} gibi bir değer verir. ama sadece herhangi bir fikir "VITA" değerine ihtiyacım var?
Pedro Teran

Vaov! Bu kolay bir çözüm! Harika!
pumpkee

Bunu denedim, ama gerçek metni alamadım. Bir imleç nesnesini temsil eden bir dize var: android.database.sqlite.SQLiteCursor@410dfae8muhtemelen bir imleç bağdaştırıcısı kullandım çünkü. Doğru dizeyi almak için ne yapmam gerektiğine dair bir fikrin var mı?
AdamMc331

evet, döndürülen değer adaptörün türüne bağlıdır. İmlecinizi döndürmek için bağdaştırıcınız imleç tabanından olmalıdır. imlecine yazmayı deneyin ve sonra imleçten değerinizi alın.
Farhan


34

Sahip olduğunuz metni bulmak için dizini ve Bağdaştırıcıyı kullanmanız gerekir

Bu Spinner örneğine bakın

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.
    }
}

4
Ayrıca ihtiyacınızspinner.setOnItemSelectedListener(this);
beyazLT

14

bunu kullan

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>

13

Spinner dizi için tamsayı değerini döndürür. Dizine göre dize değerini almanız gerekir.

Spinner MySpinner = (Spinner)findViewById(R.id.spinner);
Integer indexValue = MySpinner.getSelectedItemPosition();

10
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

        }
    });

}

9

Tek satırlı sürüm:

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

GÜNCELLEME: Projenizi derlemek için SDK 26 (veya daha yenisi) kullanıyorsanız döküm işlemini kaldırabilirsiniz.

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

7
TextView textView = (TextView) spinActSubTask.getSelectedView().findViewById(R.id.tvProduct);

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

7

Dönücü adaptörünü ayarladıktan sonra bu kod yardımcı olacaktır

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) {

        }
    });

3

Bir CursorAdapter temelli eğirme makineleri için:

  • seçilen öğe kimliğini al: spinner.getSelectedItemId()
  • öğe adını veritabanınızdan alın, örneğin:

    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;
    }

1

HashMap tabanlı çevirici olanlar için :

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

Ana faaliyetler dışında bir Parça, Adaptör veya Sınıftaysanız, bunu kullanın:

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

Sadece rehberlik içindir; onClick yönteminden önce görünümünüzün kimliğini bulmalısınız .


1

Biraz da elde edilebilir güvenli kullanarak yol String.valueOf()şöyle

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

tüm cehennem kırıldığında uygulamayı çökmeden. Güvenliğinin arkasındaki sebep null, argüman olarak nesnelerle başa çıkabilme yeteneğine sahip olmaktır . Belgeler diyor

argüman ise null, o zaman eşit bir dize "null"; aksi takdirde değeri obj.toString()döndürülür.

Bu nedenle, örneğin, seçili olan öğenin dönüştürülmesi gereken boş olması durumunda bazı sigortalar vardır .SpinnerString


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

Bu, sorunu iyi çözebilir, ancak lütfen bir açıklama da yapın. Birçok yeni kullanıcı SO'ya gelir ve kodunuzla ilgili açıklama, problemlerini çözmek için kodu nasıl adapte edeceklerini öğrenmelerine yardımcı olur.
JenB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.