values style item android spinner

style - java android spinner



Android: setSelection no tiene efecto en Spinner (10)

La solución es llamar a setSelection (my_pos, true). Observe el segundo parámetro.

No lo olvide, si llama animado, configure los parámetros de diseño, entonces :) Ejemplo:

LinearLayout.LayoutParams spinnerLp = (LinearLayout.LayoutParams) spinner.getLayoutParams(); spinner.setSelection(selectedPositionAge, true); spinnerLp.gravity = Gravity.CENTER; spinner.setLayoutParams(spinnerLp);

los acolchados ajustados manualmente al rotor deben ser reseteados manualmente

Tengo un problema con setSelection en un Spinner. Establecí el valor que se preseleccionará cuando se muestre el rotador en el código, pero no tiene ningún efecto y siempre se selecciona la primera alternativa en la lista. El código se ve así:

LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View dialogView = li.inflate(R.layout.edit_event, null); ... ArrayList<String> routes = new ArrayList<String>(); // routes filled with values at runtime ... ArrayAdapter<String> aa = new ArrayAdapter<String>(GOFdroid.this, android.R.layout.simple_spinner_item, routes); aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner destSpinner = (Spinner) dialogView.findViewById(R.id.edit_event_destination); String dest = events.get(pos).getDestination(); int routesPos = routes.indexOf(dest); Log.d(TAG, "Dest: " + dest + ", pos: " + routesPos); destSpinner.setSelection(routesPos); destSpinner.setAdapter(aa);

El código funciona como estaba previsto excepto para la parte setSelection, y no puedo entender por qué.

El diseño XML de la ruleta se ve así (no el diseño completo, solo la parte giratoria):

// DESTINATION <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Destination:" /> <Spinner android:id="@+id/edit_event_destination" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/choose_dest" android:layout_marginBottom="10dip" android:text="" />

¡Se aprecia mucho la ayuda!

Linus


En mi caso, ninguna de las respuestas funcionó, así que puse en cola setSelection a través de un Handler

new Handler().postDelayed(new Runnable() { public void run() { mSpinner.setSelection(1); } }, 100);

Hacer esto podría causar problemas cuando se ejecuta en dispositivos lentos, pero estoy trabajando para un dispositivo específico, así que está bien usar este truco


Intente mover la llamada a setSelection() después de la llamada a setAdapter() .


Ninguna de las respuestas anteriores funcionó para mí. Lo que funcionó, sin embargo, fue crear la variable de instancia mSpinner en el método onCreateView() de mi fragmento (o, supongo, el método ''onCreate ()'' de tu actividad), y luego hacer esto en mi método onLoadFinished() ...

@Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { adapter.swapCursor(cursor); mSpinner.setSelection(mSelectedIndex); }


Puede intentar

mSpinner.post(new Runnable() { public void run() { mSpinner.setSelection(1); } });

esto publicará la acción ejecutable para ejecutar tan pronto como se cree la vista


Tuve el mismo problema con un spinner dentro de un fragment : setSelection funciona correctamente durante onCreate en el primer inicio de la actividad, pero no cuando giro la pantalla. Lo resolví llamando a setSelection dentro del método onViewStateRestored del fragmento en lugar de llamarlo dentro del método onCreate . No estoy seguro, pero creo que no puede usar setSelection hasta que la vista esté completamente cargada, incluso si puede encontrar findViewById .


Tuve un problema similar. ¡En mi caso setAdaper y setSelection estaban en el orden correcto! El formulario ejecutado onCreate funcionó, pero cuando se ejecutó desde onResume no tuvo ningún efecto.

La solution es llamar a setSelection(my_pos, true) . Observe el segundo parámetro.


prueba esto, funcionó para mí:

Spinner destSpinner = (Spinner)dialogView.findViewById(R.id.edit_event_destination); destSpinner.setSelection(0); String dest = events.get(pos).getDestination(); int routesPos = routes.indexOf(dest); destSpinner.setAdapter(aa); Log.d(TAG, "Dest: " + dest + ", pos: " + routesPos); destSpinner.setSelection(routesPos);


utilizar esta

sp2.setAdapter(sp2.getAdapter()); sp2.getAdapter().notifyDataSetChanged(); sp2.setSelection(0, false);


Spinner.setSelection() no funciona si lo llamas antes de Spinner.setAdapter()

Intenta llamar a setSelection() después de la llamada a setAdapter ().

Motivo Detrás de esto : cuando llamas a Spinner.Selection() antes de configurar un adaptador simplemente significa que estás tratando de configurar spinner a índice personalizado mediante setSelection () cuando no contiene ningún dato o podemos decir que ese spinner tiene un máximo item = 0.

entonces setSelection(1) significa establecer el índice en 1 para spinner que tiene max item = 0; Aunque el propio spinner maneja esto fuera deBoundIndex para que su aplicación no falle.

la llamada a SetSelection() debería ser posterior a setAdapter () solamente

Además, si tiene Spinner.SetOnItemSelectedListener() y tiene un problema, onItemSelected(AdapterView<?> parent, View view, int position, long id) se activa con position value = 0 cuando se carga la actividad y luego debe usar este patrón.

Spinner.SetAdapter() Spinner.setSelection(); Spinner.setOnItemSelectedListener();