texto - spinner android studio
¿Cómo establecer Spinner predeterminado por su valor en lugar de la posición? (5)
Compare la cadena con el valor del índice
private void selectSpinnerValue(Spinner spinner, String myString)
{
int index = 0;
for(int i = 0; i < spinner.getCount(); i++){
if(spinner.getItemAtPosition(i).toString().equals(myString)){
spinner.setSelection(i);
break;
}
}
}
Tengo 1-50 registros en la base de datos. Estoy obteniendo esos datos usando el cursor y establezco esos valores en Spinner usando Simple Cursor Adapter. Ahora lo que necesito es que quiera establecer un valor, por ejemplo, valor 39º. Pero no por su posición que quiero establecer por su valor.
Sé cómo configurar el spinner predeterminado por su posición
spinner.setSelection(39)
configurará la ruleta a ese valor.
Pero no tenía idea de configurar el valor predeterminado de hilandero por su valor (texto) en la base de datos. Sé los valores en la base de datos. Por ejemplo, "libros" es uno de los valores en la ruleta. Necesito establecer el spinner por defecto como libros.
¿Hay alguna manera posible de hacer esto?
Finalmente, resolví el problema usando la siguiente manera, en la cual la posición del girador se puede obtener por su cuerda
private int getPostiton(String locationid,Cursor cursor)
{
int i;
cursor.moveToFirst();
for(i=0;i< cursor.getCount()-1;i++)
{
String locationVal = cursor.getString(cursor.getColumnIndex(RoadMoveDataBase.LT_LOCATION));
if(locationVal.equals(locationid))
{
position = i+1;
break;
}
else
{
position = 0;
}
cursor.moveToNext();
}
Llamar al método
Spinner location2 = (Spinner)findViewById(R.id.spinner1);
int location2id = getPostiton(cursor.getString(3),cursor);
location2.setSelection(location2id);
Espero que ayude a alguien ...
Puedes hacerlo fácilmente así.
String cls=student.getStudentClass();
class_spinner.setSelection(classArray.indexOf(cls),true);
Si está configurando los valores de spinner por arraylist
o array
, puede establecer la selección del spinner usando el índice del valor.
String myString = "some value"; //the value you want the position for
ArrayAdapter myAdap = (ArrayAdapter) mySpinner.getAdapter(); //cast to an ArrayAdapter
int spinnerPosition = myAdap.getPosition(myString);
//set the default according to value
spinner.setSelection(spinnerPosition);
ver el enlace ¿Cómo establecer el ítem seleccionado de Spinner por valor, no por posición?
así es como lo hice:
String[] listAges = getResources().getStringArray(R.array.ages);
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter =
new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listAges);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner_age.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.spinner_icon), PorterDuff.Mode.SRC_ATOP);
spinner_age.setAdapter(dataAdapter);
spinner_age.setSelection(0);
spinner_age.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
if(position > 0){
// get spinner value
Toast.makeText(parent.getContext(), "Age..." + item, Toast.LENGTH_SHORT).show();
}else{
// show toast select gender
Toast.makeText(parent.getContext(), "none" + item, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});