J'ai 1-50 enregistrements dans la base de données. Je récupère ces données à l'aide du curseur et définit ces valeurs sur Spinner à l'aide de Simple Cursor Adapter. Maintenant, ce dont j'ai besoin, c'est que je veux définir une valeur, la 39ème valeur par défaut. Mais pas par sa position, je veux définir sa valeur.
Je sais comment définir la valeur par défaut de la spinner par sa position
spinner.setSelection(39)
mettra le spinner à cette valeur.
Mais je n'avais aucune idée sur la définition du paramètre spinner par défaut en fonction de sa valeur (texte) dans la base de données ..__ Je connais les valeurs de la base de données. Par exemple, "livres" est l’un des avantages du cône. Je dois définir la valeur par défaut de Spinner comme livre.
Y at-il un moyen possible de faire cela?
Enfin, j'ai résolu le problème en utilisant la méthode suivante, dans laquelle la position du disque peut être obtenue par sa chaîne
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();
}
Appeler la méthode
Spinner location2 = (Spinner)findViewById(R.id.spinner1);
int location2id = getPostiton(cursor.getString(3),cursor);
location2.setSelection(location2id);
J'espère que cela aidera pour quelqu'un ..
Si vous définissez les valeurs de filtre par arraylist
ou array
, vous pouvez définir la sélection du filtre en utilisant l'index de la valeur.
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);
voir le lien Comment définir l’élément sélectionné de Spinner par valeur, pas par position?
Comparer la chaîne avec la valeur de l'index
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;
}
}
}
voici comment je l'ai fait:
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) {
}
});
Vous pouvez le faire facilement comme ça.
String cls=student.getStudentClass();
class_spinner.setSelection(classArray.indexOf(cls),true);