wake-up-neo.com

Wie kann ich die Position im Spinner einstellen?

Ich habe mit BufferedReader-Text aus einer Systemdatei gelesen. Dieser Text enthält zum Beispiel 5 WÖRTER, kann aber in einem anderen Fall weniger oder mehr Wörter enthalten. Dann habe ich diesen Text (die genannten Wörter) in eine SINGLE-Zeichenfolge eingefügt und in den gemeinsamen Einstellungen gespeichert. Dann habe ich aus diesem String einen Spinner gemacht. Der Code lautet wie folgt:

Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, Android.R.layout.simple_spinner_dropdown_item, yourString.split(" "));
    spinner.setAdapter(spinnerArrayAdapter);

Dann lese ich Text aus einer anderen Datei. Dieser Text enthält immer ein Wort. Und dieses Wort ist dasselbe wie eines der Wörter, die ich aus der ersten Datei gelesen hatte (zum Beispiel, wenn die erste Datei, die ich las, 5 Wörter enthielt und eines dieser Wörter "schwarz" war), die zweite Datei, die ich auch las enthält "schwarz"). Und ich muss dieses bestimmte Word (das in beiden Dateien vorhanden ist) als standardmäßig gewählte Option in meinem Spinner festlegen.

Zum Beispiel:

Die erste Saite enthält: Rot, Blau, Gelb, Schwarz, Weiß

Zweite Saite enthält: gelb

Ich mache aus der ersten Saite einen Spinner, also werden die Optionen in der Spinner genau wie folgt aufgefüllt: "rot, blau, gelb, schwarz, weiß" und die standardmäßig ausgewählte Option ist rot (weil sie zufällig die erste meiner ersten Saite ist). aber ich muss in diesem Fall gelb als Standardoption auswählen, da der zweite String "gelb" enthält. Die Wörter in beiden Zeichenfolgen sind immer unterschiedlich.

BTW: Ich weiß, wie man die Position in einem Spinner speichert, aber ich weiß nicht, wie ich die Position in einem Spinner festlegen soll, wenn ich zwei Saiten miteinander vergleiche und einer von ihnen mehr Wörter enthält.

19
Adam

Hier ist die Lösung dank sfratini für Hilfe.

Benutzen:

spinner.setSelection(getIndex(spinner, myString));

Dann:

private int getIndex(Spinner spinner, String myString){

        int index = 0;

        for (int i=0;i<spinner.getCount();i++){
            if (spinner.getItemAtPosition(i).equals(myString)){
                index = i;
            }
        }
        return index;
}
50
Adam

ich denke, diese Linie wird dir helfen 

 String[] a= new String[10];
 a[0]="abc";
 a[1]="xyz";
 a[2]="pqr";
 .....
 .....
 spin = (Spinner) findViewById(R.id.TimeSpinner);
 ArrayAdapter<String> adapter = new ArrayAdapter<String>(TimeSpin.this, Android.R.layout.simple_spinner_item, a);  
   adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item)‌​;  
   spin.setAdapter(adapter); 
   spin.setSelection(0);
11
Harsh Trivedi

Sie müssen keinen Adapter verwenden ... Sie müssen nur das String-Array in die Liste konvertieren
Dann verwenden Sie indexOf (Object object) , um den Index Ihrer Drehung mit der ausgewählten Farbe zu erhalten

String [] strings = yourString.split(" ");
List<String> strList = new ArrayList<String>(Arrays.asList(strings));
//Or you can load array from xml...
//List<String> strList2 = Arrays.asList(getResources().getStringArray(R.array.array_color));
spinner.setSelection(strList.indexOf("colorvalue"));
1
MohamedZaatari