it-swarm.com.de

Wie setze ich den Spinner-Standard nach seinem Wert anstelle von Position?

Ich habe 1-50 Datensätze in der Datenbank. Ich rufe diese Daten mit dem Cursor ab und setze diese Werte mit dem Simple Cursor Adapter auf Spinner. Nun, was ich brauche, ist, ich möchte einen Wert festlegen, sagen Sie 39. Wert als Standard. Aber nicht durch seine Position möchte ich durch seinen Wert festlegen.

Ich weiß, wie der Spinner durch seine Position voreingestellt wird

   spinner.setSelection(39) 

setzt den Spinner auf diesen Wert.

Aber ich hatte keine Ahnung, wie man den Spinner-Standard nach seinem Wert (Text) in der Datenbank setzt. Ich kenne die Werte in der Datenbank. Zum Beispiel ist "Bücher" einer der Werte im Spinner. Ich muss den Spinner-Standard als Bücher festlegen.

Gibt es eine Möglichkeit, dies zu tun?

49
vinothp

Schließlich löste ich das Problem auf folgende Weise, in der die Position des Spinners durch seine Schnur ermittelt werden kann

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

Aufruf der Methode 

    Spinner location2 = (Spinner)findViewById(R.id.spinner1);
    int location2id = getPostiton(cursor.getString(3),cursor);
    location2.setSelection(location2id);

Ich hoffe es wird für einige helfen .. 

14
vinothp

Wenn Sie die Drehfeldwerte mit arraylist oder array einstellen, können Sie die Auswahl des Drehfelds über den Index des Werts festlegen.

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

siehe den Link Wie kann ich das ausgewählte Element von Spinner nach Wert und nicht nach Position setzen?

105

Zeichenfolge mit Wert aus Index vergleichen

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

so habe ich es gemacht:

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

Sie können es einfach so machen.

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