web-dev-qa-db-fra.com

Comment définir Spinner Default par sa valeur 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 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?

49
vinothp

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 .. 

14
vinothp

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?

105

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;
             }
         }
     }
10
Svitlana

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) {
            }
        });
1
MrG

Vous pouvez le faire facilement comme ça.

String cls=student.getStudentClass();
class_spinner.setSelection(classArray.indexOf(cls),true);
0
Rajat Jain