Agregar un oyente a un widget selector de números

Estoy trabajando en la integración de un selector de números a mi aplicación. La actividad muestra una lista de elementos cada uno con un selector de números. El usuario puede aumentar o disminuir la cantidad usando el selector de números. Al hacer esto, me gustaría actualizar un TextView mostrando el precio.

Me encontré con dificultades al intentar lograr esto. Hice un proyecto simple y traté de probar y mostrar un mensaje de brindis cuando el usuario hizo clic en el widget, pero en vano.

Mi conjetura es que el widget de número no se trata como un botón para ello un oyente de clic no funciona? Agradecería cualquier consejo con respecto a la adición de un oyente.

A continuación se muestra mi código:

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(); } }); } 

Para establecer el oyente con Picker , su actividad debe implementar el escucha de la interfaz del selector. (En realidad, su actividad no es obligatoria para implementar la interfaz, también puede utilizar el método interno anónimo.

Así que en su actividad:

 public class MainActivity extends Activity implements NumberPicker.OnValueChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); NumberPicker np = (NumberPicker)findViewById(R.id.numberPicker1); np.setMaxValue(99); np.setMinValue(0); np.setValue(50); np.setOnValueChangedListener(this); } public void onValueChange(NumberPicker picker, int oldVal, int newVal) { Toast.makeText(this, "change", Toast.LENGTH_SHORT).show(); } } 

Para los desarrolladores de Android más recientes (como yo), la actividad en sí no es necesaria para implementar el oyente. Sólo necesita pasar a setOnValueChangedListener() .

Esto ayuda a evitar demasiados implements y demasiados superposiciones @Overrides .

Ejemplo:

 // Number Picker NumberPicker np = (NumberPicker) getView().findViewById(R.id.numberPicker1); np.setMinValue(0); np.setMaxValue(35); np.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker numberPicker, int i, int i2) { Toast.makeText(this, "Value was: " + Integer.toString(i) + " is now: " + Integer.toString(i2), Toast.LENGTH_SHORT).show(); } }); 

Tendrá que establecer NumberPicker.setOnValueChangedListener a notificado al cambiar el valor actual de NumberPicker

Vea este ejemplo cómo establecemos setOnValueChangedListener para NumberPicker

  • No se puede iniciar la actividad, setOnClickListener
  • Cómo implementar OnClickListener en Android
  • ¿Cómo agregar tiempo al temporizador de cuenta atrás?
  • ¿Cómo abrir una nueva actividad haciendo clic en un elemento de listview?
  • Agregar un oyente a un botón dentro de un alerta de alerta personalizado bloquea mi aplicación
  • método no sobrescribe el método de su superclase. Fragmento Android
  • Haga clic en el elemento de lista de un ListView no responde
  • AdapterView.OnItemClickListener con más ListView
  • Usando un bucle para establecer los botones enclicklistener
  • Establecer onClickListener a LinearLayout llenado por adaptador personalizado
  • ¿Por qué OnClickListener en un ViewHolder no funciona?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.