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?

49
demandé sur Cœur 2012-05-17 14:40:46

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);

voir le lien

100
répondu Vinothkumar Arputharaj 2017-05-23 12:34:21

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

14
répondu vinothp 2014-06-06 10:21:09

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;
             }
         }
     }
10
répondu Svitlana 2016-04-21 09:44:31

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) {
            }
        });
1
répondu MrG 2016-06-28 08:19:26

Vous pouvez le faire facilement.

String cls=student.getStudentClass();
class_spinner.setSelection(classArray.indexOf(cls),true);
0
répondu Rajat Jain 2018-05-25 05:01:07