2012-07-25 14 views
6

Quiero establecer los valores del elemento del girador de Android en tiempo de ejecución.Valores de conjunto de girador Android

Esto es lo que tengo hasta ahora:

final ArrayAdapter<String> calsListAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, calendarNames); 
eventCalendarList.setAdapter(calsListAdapter); 
eventCalendarList.setOnItemSelectedListener(new OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     calendarChoosen = availableCals.get(arg2); 
    } 
    public void onNothingSelected(AdapterView<?> arg0) { 
     Logger.d("Cal Choosen", "fffffffffffffff"); 
    } 
}); 

private List<AvailableCalendar> availableCals = new ArrayList<AvailableCalendar>(); 
private AvailableCalendar calendarChoosen; 

Pero los valores no están ajustadas. ¿Cómo puede hacerse esto?

+0

Publicar un cierto código. Su explicación no es lo suficientemente clara como para entender el problema. –

+0

@DavidWasser El código es el siguiente: final ArrayAdapter calsListAdapter = new ArrayAdapter ( this, android.R.layout.simple_list_item_1, calendarNames); \t eventCalendarList.setAdapter (calsListAdapter); \t \t \t eventCalendarList \t \t \t \t \t .setOnItemSelectedListener (nueva OnItemSelectedListener() { \t \t \t \t \t \t public void onItemSelected (AdapterView arg0, \t \t \t \t \t \t \t \t Ver arg1, arg2 int, arg3 largo) { \t \t \t \t \t \t \t calendarChoosen = availableCals.get (arg2); \t \t \t \t \t \t} \t \t \t \t \t \t public void onNothingSelected (AdapterView arg0) { \t \t \t \t \t \t \t Logger.d ("Cal Elegido", "fffffffffffffff"); \t \t \t \t \t \t} \t \t \t \t \t}); – dominic

+0

private List availableCals = new ArrayList (); private DisponibleCalendar calendarChoosen; – dominic

Respuesta

10

Voy a asumir aquí que crea el adaptador de Spinner basado en un List<CharSequence> o algo similar. Puede usarlo para hacer operaciones de búsqueda para la selección, por ejemplo:

String name = model.getName(); 
int index = list.indexOf(name); 
if (index != -1) spinner.setSelection(index); 

Obviamente, si su modelo no contiene datos de cualquier 'name', entonces no hay nada que seleccionar en el Spinner, por lo que es posible que desee añadir un poco de lógica para manejar eso. Si el modelo tiene un 'nombre', entonces encuentre su índice en la lista original que se usó como fuente de datos para el adaptador. Solo si se encuentra una ocurrencia, configure la selección de la ruleta a ese mismo índice.

+0

Muchas gracias ... Funcionó a las mil maravillas –

2

que establezca los valores de pico largo programáticamente como esto:

public class MainActivity extends Activity { 
    private SharedPreferences prefs; 
    private String prefName = "spinner_value"; 
    int id=0; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final List<String> list=new ArrayList<String>(); 
     list.add("Item 1"); 
     list.add("Item 2"); 
     list.add("Item 3"); 

     final Spinner sp=(Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<String> adp= new ArrayAdapter<String>(this, 
            android.R.layout.simple_list_item_1,list); 
     adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     sp.setAdapter(adp); 

     prefs = getSharedPreferences(prefName, MODE_PRIVATE); 
     id=prefs.getInt("last_val",0); 
     sp.setSelection(id); 

     sp.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, 
       View arg1,int pos, long arg3) { 

      prefs = getSharedPreferences(prefName, MODE_PRIVATE); 
      SharedPreferences.Editor editor = prefs.edit(); 
      //---save the values in the EditText view to preferences--- 
      editor.putInt("last_val", pos); 

      editor.commit(); 

      Toast.makeText(getBaseContext(), 
       sp.getSelectedItem().toString(), Toast.LENGTH_SHORT).show(); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub     
     } 
    });    
} 
Cuestiones relacionadas