Ich entwickle eine Android-Anwendung, die ich habe eine Klasse A
. Die Klasse A
hat einen Spinner, und es gibt eine B-Klasse, die die Spinner onItemSelected()
, B implements OnItemSelectedListener
und B
öffentlich ist. Ich möchte eine Funktion in A
aufrufen, wenn ein neueres Element ausgewählt hat. Wenn also das Element first
ausgewählt wurde und ich es in second
ändere, dann möchte ich eine Funktion aus der Klasse A
aufrufen.
Ich möchte immer die gleiche Funktion A
aufrufen. Es aktualisiert eine Liste.
Wie kann ich das tun?
Es gibt die Klasse A
's Spinner, die in A
nennen onCreate
s:So rufen Sie eine Funktion bei jeder Auswahl in Spinner
public void addListenerOnSpinnerItemSelection() {
pspinner = (Spinner) findViewById(R.id.spinner1);
pspinner.setOnItemSelectedListener(new B());
}
Und die B-Klasse:
public class B implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){
Toast.makeText(parent.getContext(),
"The selected place: " + parent.getItemAtPosition(pos).toString(),
Toast.LENGTH_SHORT).show();
A.refresh(); //I think I should call A's function like that but
// Android Studio tells meg that refresh() must be static
}
}
Sollte ich die A
‚s-Funktion in addListenerOnSpinnerItemSelection()
nennen? Oder in B
onItemSelected
? Aber wie?
Leider ist es nicht so oben arbeiten. Wie kann ich A's Funktion ohne make refresh()
static aufrufen? Der Spinner bekommt seine Elemente aus einem XML.
Oh sorry @Steve vielleicht vergesse ich zu erwähnen, dass ich immer die gleiche Funktion bei jeder ausgewählten Änderung aufrufen möchte. Aber wie nennt man A's Funktion in B? : O 'a.function()'? –
Ja, Sie würden einfach a.function() aufrufen; an jeder Position –
Dies ist nicht der richtige Weg, [Strings in Java zu vergleichen] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – codeMagic