2012-01-07 19 views
14

Leo con texto de BufferedReader desde un archivo de sistema; este texto contiene, por ejemplo, 5 PALABRAS, pero en otro caso puede contener menos o más palabras. Luego puse este texto (las palabras mencionadas) en una cadena ÚNICA y guardé esa cadena en preferencias compartidas. Luego hice un spinner de esta cadena. Código es el siguiente:¿Cómo establecer la posición en el giro?

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

luego leí el texto de otro archivo. Este texto siempre contiene una palabra. Y esta palabra es la misma que una de las palabras que había leído del primer archivo (por ejemplo, si el primer archivo que leí contenía 5 palabras y una de estas palabras era "negra", el segundo archivo que también leí) contiene "negro"). Y necesito hacer esta palabra en particular (que existe en ambos archivos) como la opción predeterminada elegida en mi spinner.

Por ejemplo:

Primera cadena contiene: rojo, azul, amarillo, negro, blanco

Segunda cadena contiene: amarillo

hago un hilandero de la primera cadena para opciones en spinner se rellenan exactamente así: "rojo, azul, amarillo, negro, blanco" y la opción seleccionada por defecto es roja (porque es la primera en mi primera cadena), pero necesito hacer amarilla como el predeterminado seleccionado opción en este caso, porque la segunda cadena contiene "amarillo". Las palabras en ambas cadenas son siempre diferentes.

BTW: Sé cómo guardar la posición en una ruleta, pero no sé cómo establecer la posición en una ruleta si comparo dos cuerdas y una de ellas contiene más palabras.

Respuesta

7

Creo que esta línea le ayudará a

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

me pregunta si tiene alguna duda adicional –

+0

No, sólo tiene que setPosition, pero este es otro caso, primero leí el texto de un archivo (por ejemplo, este texto contiene 5 palabras y la tercera de estas palabras es "negro") Guardo estas 5 palabras en una cadena. Luego hago un spinner de esta cadena como me aconsejaste. Luego leo el texto de otro archivo y este texto contiene siempre una palabra que es lo mismo que una palabra en el primer archivo (por ejemplo, el segundo archivo contiene "negro"). Guardo esta palabra en Cadena. Y ahora necesito hacer "negro" como posición predeterminada en mi spinner. ¿Me entiendes? – Adam

+0

, antes que nada, si tiene que establecer cualquier dato como predeterminado en spinner, debe crear una matriz o lista, ya que el método spinner.setselection solo ingresa en int. Entonces, en ese momento debe pasar ese índice de matriz o lista a este método. lo tengo ? –

38

Aquí está la solución, gracias a sfratini en busca de ayuda.

Uso:

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

continuación:

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; 
} 
+0

¡Eres el jefe! XD – KryNaC

+0

funcionó para mí ... gracias :) – Devraj

+0

Puede optimizar esto, devolviendo el índice directamente cuando lo encuentre. Le ahorra una variable más algunas iteraciones. Pero solo si esto se adapta a tu caso de uso. (Devuelve la primera coincidencia, no la última, como está ahora) – AlbAtNf

1

Usted no tiene que utilizar el adaptador ... sólo tiene que convertir array de Strings a la lista
y luego usar indexOf (Objeto) para obtener el índice de su giro utilizando el color seleccionado

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")); 
Cuestiones relacionadas