Este dilema se puede resolver de variadas maneras, pero nosotros te enseñamos la que para nosotros es la solución más completa.
Solución:
En lugar de configurar OnClickListener de la ruleta, intente configurar OnTouchListener y OnKeyListener.
spinner.setOnTouchListener(spinnerOnTouch);
spinner.setOnKeyListener(spinnerOnKey);
y los oyentes:
private View.OnTouchListener spinnerOnTouch = new View.OnTouchListener()
public boolean onTouch(View v, MotionEvent event)
if (event.getAction() == MotionEvent.ACTION_UP)
//Your code
return false;
;
private static View.OnKeyListener spinnerOnKey = new View.OnKeyListener()
public boolean onKey(View v, int keyCode, KeyEvent event)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
//your code
return true;
else
return false;
;
No trate una rueda giratoria como un botón, los botones tienen eventos onClick. Los giradores tienen eventos onItemSelected.
Debería capturar el evento onItemSelected de Spinner de esta manera:
import android.widget.AdapterView;
Spinner productname_spinner =(Spinner) findViewById(R.id.your_spinner);
productname_spinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener()
public void onItemSelected(AdapterView> parent, View view, int pos, long id)
Object item = parent.getItemAtPosition(pos);
System.out.println(item.toString()); //prints the text in spinner item.
public void onNothingSelected(AdapterView> parent)
);
En Kotlin, similar a lo siguiente:
mySpinner.onItemSelectedListener = object: OnItemSelectedListener
override fun onNothingSelected(parent: AdapterView<*>?)
// Do nothing
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long)
val selection = parent?.getItemAtPosition(position)
viewModel.updateSelection(selection as String)
Recuerda que te damos el privilegio decir si diste con el hallazgo.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)