2012-07-25 29 views
6

Android eğirme öğesi değerlerini çalışma zamanında ayarlamak istiyorum.Android çevirici set değerleri

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; 

Ama değerler ayarlanmaz: Burada

Ben bugüne kadar ne olduğunu. Nasıl yapılabilir?

+0

Mesaj bazı kodu. Açıklamanız sorunu anlamak için yeterince açık değil. –

+0

@DavidWasser Kod şu şekildedir: final ArrayAdapter calsListAdapter = yeni ArrayAdapter ( bu, android.R.layout.simple_list_item_1, calendarNames); \t eventCalendarList.setAdapter (calsListAdapter); \t \t \t eventCalendarList \t \t \t \t \t .setOnItemSelectedListener (yeni OnItemSelectedListener() { \t \t \t \t \t \t public void onItemSelected (AdapterView arg0, \t \t \t \t \t \t \t \t Görünüm arg1, int arg2, uzun arg3) { \t \t \t \t \t \t calendarChoosen = availableCals.get (arg2); \t \t \t \t \t \t} public void onNothingSelected (AdapterView arg0) { \t \t \t \t \t \t \t Logger.d \t \t \t \t \t \t ("Cal Seçilmiş", "fffffffffffffff"); \t \t \t \t \t \t} \t \t \t \t \t}); – dominic

+0

özel Liste availableCals = yeni ArrayList (); private UygunTakvim takvimiChoosen; – dominic

cevap

10

Burada, Spinner adaptörünü List<CharSequence> ya da benzerlerini temel alarak oluşturduğunuzu varsayacağım. Sen seçimi için aramalarını, örneğin yapmak için kullanabilirsiniz: modeliniz herhangi bir 'adı' veri içermiyor ise

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

Açıkçası, daha sonra Spinner içinde seçmek için bir şey yok, bu nedenle bazı mantık eklemek isteyebilirsiniz Bunu halletmek için. Modelde bir 'isim' varsa, bağdaştırıcı için veri kaynağı olarak kullanılan orijinal listesindeki dizinini bulun. Sadece bir olay bulunmuşsa, eğiricinin seçimini aynı dizine ayarlayın.

+0

Çok teşekkürler ... Çekicilik gibi çalıştı –

2

böyle programlama spinner değerlerini ayarlayın:

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     
     } 
    });    
} 
İlgili konular