Ich habe zwei Spinner, Spinner A und Spinner B. Wenn der Benutzer A wechselt, wird B mit einem komplett neuen Datensatz aktualisiert. Ich habe auch einen Callback für B implementiert, um setOnItemSelectedListener zu verwenden, so dass ich einige Objekte in einer anderen Klasse ändern kann, wenn B vom Benutzer geändert wird.Programmgesteuerter Aufruf einer Methode im Gegensatz zu einem vom Benutzer initiierten Anruf über die Benutzeroberfläche - wie wird mit beiden verfahren, wenn die Anwendung den Unterschied kennen muss?
B.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mComponentColor.setSelection(position);
mCompColorAsBuilt[mComponent.getComponentSelection()] = position;
setColor();
}
});
Das Problem, das ich in lief habe ist, dass ich wirklich nicht wollen, diese Objekte, wenn der Benutzer derjenige, der den Spinner geändert wurde ändern. Da ich B basierend auf der Auswahl von A automatisch bevölkere, wird der Rückruf von B aufgerufen, wenn der Benutzer A ändert.
Irgendwelche Gedanken, wie ich mit dieser Situation umgehen könnte?
Lesen Sie dies, es könnte helfen: http://StackOverflow.com/Questions/4206047/Spinner-how-May-i-Unterscheiden-User-Aktionen-von-Computer-Aktionen-in-a-onite/4206541 # 4206541 – blindstuff
Danke, aber das wird ein letzter Ausweg für mich sein. Es muss einen besseren Weg geben. – user432209
Wrapper erstellen und Anwendungsaufruf eine Methode und Benutzer eine andere aufrufen? Ähnlich wie boolesche Flaggen, aber mit der Möglichkeit, diese Designentscheidung zu dokumentieren. Ich mag die ganze Idee nicht :) –