aufgerufen, ich weiß, dass dies mehrmals gefragt wurde, aber auf neueren Android-Plattform sieht es so aus, dass die vorgeschlagenen Lösungen nicht funktioniert (wie andere dasselbe gesagt). Ich brauche, dass meine Spinner noch OnItemSelected aufrufen, auch wenn der Benutzer das gleiche Element zweimal auswählen. Ich habe es geschafft, diese Klasse zu finden, die den Trick tun sollten:Android Spinner OnItemSelected nicht mit dem gleichen Element
public class NDSpinner extends Spinner {
private int lastSelected = 0;
private static Method s_pSelectionChangedMethod = null;
static {
try {
Class noparams[] = {};
Class targetClass = AdapterView.class;
s_pSelectionChangedMethod = targetClass.getDeclaredMethod("selectionChanged", noparams);
if (s_pSelectionChangedMethod != null) {
s_pSelectionChangedMethod.setAccessible(true);
}
} catch(Exception e) {
Log.e("Custom spinner, reflection bug:", e.getMessage());
throw new RuntimeException(e);
}
}
public NDSpinner(Context context) {
super(context);
}
public NDSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NDSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if(this.lastSelected == this.getSelectedItemPosition())
testReflectionForSelectionChanged();
if(!changed)
lastSelected = this.getSelectedItemPosition();
super.onLayout(changed, l, t, r, b);
}
public void testReflectionForSelectionChanged() {
try {
Class noparams[] = {};
s_pSelectionChangedMethod.invoke(this, noparams);
} catch (Exception e) {
Log.e("Custom spinner, reflection bug: ", e.getMessage());
e.printStackTrace();
}
}
@Override
public void onClick(DialogInterface dialog, int which) {
super.onClick(dialog, which);
}
}
Diese infact funktioniert, aber es hat einen Fehler: es ist das Element zweimal rufen das erste Mal :( Kann jemand wissen, wie kann ich lösen ?. diese
Dank Kollegen
Nach mehreren Stunden Recherchen gefunden Ihre Antwort schließlich zu ändern. Du hast mir viel Zeit gespart. Danke, Mann. – Hesam
Wie kann ich das in meiner Tätigkeit nutzen? –
@HammadNasir ist es nur eine benutzerdefinierte Spinner. Verwenden Sie einfach das NDSpinner-Objekt anstelle des klassischen Spinner. –