451 Stimmen

Android Spinner: Abrufen des Änderungsereignisses für das ausgewählte Element

Wie können Sie den Ereignis-Listener für einen Spinner festlegen, wenn sich das ausgewählte Element ändert?

Im Grunde versuche ich, etwas Ähnliches zu tun:

spinner1.onSelectionChange = handleSelectionChange;

void handleSelectionChange(Object sender){
    //handle event
}

0 Stimmen

Ich habe diese Antworten ausprobiert, aber keine war hilfreich. Sobald Spinner Komponente unterstützt nicht Element klicken Ereignisse. Spinner Dokumentation

9voto

droidster.me Punkte 808

Suchen Sie den Namen Ihres Spinners und finden Sie die ID, dann implementieren Sie diese Methode.

spinnername.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        // your code here
    }

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

8voto

johndotnet Punkte 123

Die Dokumentation für das Spinner-Widget sagt

Ein Spinner unterstützt keine Elementklickereignisse.

Sie sollten Folgendes verwenden setOnItemSelectedListener um Ihr Problem zu lösen.

8voto

Abduhafiz Punkte 3028

Für Kotlin können Sie verwenden:

spinner.onItemSelectedListener =  object : AdapterView.OnItemSelectedListener {
    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {

    }

    override fun onNothingSelected(p0: AdapterView<*>?) {

    }
}

Hinweis: Für Parameter von onItemSelected Methode verwende ich benutzerdefinierte Variablennamen

8voto

Chiwai Chan Punkte 4570
spinner1.setOnItemSelectedListener(
    new AdapterView.OnItemSelectedListener() {
        //add some code here
    }
);

2 Stimmen

Das Problem, dass dieser Callback aufgerufen wird, wenn der Spinner zum ersten Mal gestartet wird (und damit eine Reaktion hervorruft, die nichts mit der tatsächlichen Auswahl eines Elements zu tun hat), wird dadurch nicht gelöst.

4voto

indrajeet Punkte 341

Eine globale Variable für die aktuelle Auswahl des Spinners nehmen:

int currentItem = 0;

spinner_counter = (Spinner)findViewById(R.id.spinner_counter);
String[] value={"20","40","60","80","100","All"};
aa=new ArrayAdapter<String>(this,R.layout.spinner_item_profile,value);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner_counter.setAdapter(aa);

spinner_counter.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(currentItem == position){
                return; //do nothing
            }
            else
            {
                 TextView spinner_item_text = (TextView) view;
                 //write your code here
            }
            currentItem = position;
        }

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

        }
    });

//R.layout.spinner_item_profile
<?xml version="1.0" encoding="utf-8"?>

<TextView  android:id="@+id/spinner_item_text"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" 
android:layout_height="wrap_content"
android:background="@drawable/border_close_profile"
android:gravity="start"  
android:textColor="@color/black"         
android:paddingLeft="5dip"
android:paddingStart="5dip"
android:paddingTop="12dip"
android:paddingBottom="12dip"
/>

//drawable/border_close_profile
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
   <shape android:shape="rectangle">
    <solid android:color="#e2e3d7" />
   </shape>
 </item>
<item android:left="1dp"
android:right="1dp"
android:top="1dp"
android:bottom="1dp">
<shape android:shape="rectangle">
    <solid android:color="@color/white_text" />
</shape>
</item>
</layer-list>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X