Hinzufügen eines Listeners zu einem Nummer-picker widget
Arbeite ich an der Integration einer Anzahl picker meiner Anwendung. Die Aktivität zeigt eine Liste der Elemente, die jeweils mit einer Nummer auszuwählen. Der Benutzer kann zu erhöhen oder verringern Sie die Menge mit der Anzahl picker. Wie Sie dies tun, möchte ich zum aktualisieren einer TextView zeigt der Preis.
Ich lief in Schwierigkeiten, wenn Sie versuchen, dies zu erreichen. Habe ich ein einfaches Projekt und versucht, um zu versuchen und zeigen eine toast-Nachricht, wenn der Benutzer klickte auf das widget, aber ohne Erfolg.
Meine Vermutung ist, dass die Anzahl widget wird nicht behandelt wie ein Knopf-daher wird ein Klick-listener nicht funktioniert? Ich würde schätzen jede Beratung in Bezug auf das hinzufügen eines Listeners.
Unten ist mein code:
NumberPicker np;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
np = (NumberPicker)findViewById(R.id.numberPicker1);
np.setMaxValue(99);
np.setMinValue(0);
np.setValue(50);
np.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Number selected", Toast.LENGTH_SHORT).show();
}
});
}
- Möglicherweise müssen Sie tun
np.setClickable (true)
wenn alles, was Sie wollen, sind, klicken Sie auf Ereignisse. Allerdings, wenn Sie möchten, zu hören, für eine Zahl ändern, warum nicht OnValueChangeListener?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einstellen Hörer mit
Picker
, Ihre Tätigkeit zu implementieren, die die picker-Schnittstelle listener. (Tatsächlich, Ihre Tätigkeit ist nicht zwingend erforderlich, um die Schnittstelle implementieren, können Sie auch anonyme innere Methode. Was auch immer funktioniert.)So in Ihre Tätigkeit:
Für die neueren Android-Entwickler (wie mich), die Tätigkeit selbst nicht muss die Umsetzung der Zuhörer. Sie muss nur übergeben werden, in der
setOnValueChangedListener()
.Dies hilft zu vermeiden, zu viele
implements
und zu viele überlappende@Overrides
.Beispiel:
müssen Sie NumberPicker.setOnValueChangedListener, um benachrichtigt ändern des aktuellen Wertes der
NumberPicker
sehen diese Beispiel wie setzen wir
setOnValueChangedListener
für NumberPicker