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.
- El clic de listitem personalizado no activa listview.onclicklistener
- OnItemClickListener y OnClickListener no funcionan para ListView
- EditText campo es necesario antes de pasar a otra actividad
- Cómo quitar un elemento seleccionado de ListView utilizando CursorAdapter
- ¿Cómo puedo borrar el texto de Android TextView?
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(); } }); }
- "Presione y mantenga presionado" en Android necesita cambiar estados (selector XML personalizado) usando onTouchListener
- Usando onClick en TextView con texto seleccionable - cómo evitar doble clic?
- Cómo obtener el identificador de elemento en un controlador onItemClick
- Cómo hacer algo después de que el usuario haga clic en mi EditText
- Android - Gridview con Custom BaseAdapter, crear onclicklistener
- Cómo implementar OnTouch Listener en XML
- ¿Dónde debo colocar onClickListener en un ListView personalizado?
- Fragmento implementa OnClickListener
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
- ¿Cómo puedo saber si estoy en el depurador en android?
- No hay servicio de tipo factory disponible en ProjectScopeServices gradle sync issue