Comment définir la valeur par défaut de Spinner au lieu de sa Position?
j'ai 1-50 enregistrements dans la base de données. Je récupère ces données à l'aide du curseur et je mets ces valeurs à Spinner à l'aide D'un simple adaptateur de curseur. Maintenant, ce que je besoin est, je veux dire une valeur 39e valeur par défaut. Mais ce n'est pas par sa position que je veux fixer sa valeur.
je sais comment définir la valeur par défaut du spinner par sa position
spinner.setSelection(39)
positionnera le spinner à cette valeur.
mais je n'avais aucune idée de définition de la valeur par défaut de spinner (texte) dans la base de données. Je connais les valeurs de la base de données. Par exemple "Livres" est l'une des valeurs dans le fileur. J'ai besoin de définir la valeur par défaut de spinner comme des livres.
y a-t-il un moyen de le faire?
5 réponses
si vous définissez les valeurs de spinner par arraylist
ou array
vous pouvez définir la sélection du spinner 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);
finalement, j'ai résolu le problème en utilisant la manière suivante, dans laquelle la position du fileur 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();
}
l'Appel de la méthode
Spinner location2 = (Spinner)findViewById(R.id.spinner1);
int location2id = getPostiton(cursor.getString(3),cursor);
location2.setSelection(location2id);
j'espère que ça aidera quelqu'un..
comparer la chaîne de caractères 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;
}
}
}
c'est comme ça que 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.
String cls=student.getStudentClass();
class_spinner.setSelection(classArray.indexOf(cls),true);