2012-07-25 142 views
6

我想在运行时设置android微调器项目值。Android微调器设置值

这是我到目前为止有:

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; 

但没有设置值。如何做呢?

+0

张贴一些代码。您的解释不够清楚,无法理解问题。 – 2012-07-25 18:44:51

+0

@DavidWasser代码如下: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(新OnItemSelectedListener(){ \t \t \t \t \t \t公共无效onItemSelected(适配器视图为arg0, \t \t \t \t \t \t \t \t查看ARG1,ARG2 INT, long arg3){ \t \t \t \t \t \t \t calendarChoosen = availableCals.get(arg2); \t \t \t \t \t \t} \t \t \t \t \t \t公共无效onNothingSelected(适配器视图为arg0){ \t \t \t \t \t \t \t Logger.d( “校准Choosen”, “fffffffffffffff”); \t \t \t \t \t \t} \t \t \t \t \t}); – dominic 2012-07-26 06:05:18

+0

private List availableCals = new ArrayList (); private AvailableCalendar calendarChoosen; – dominic 2012-07-26 06:18:48

回答

10

我打算假设您在此创建基于List<CharSequence>或类似的微调器的适配器。您可以使用,这样做对选择查找,如:

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

显然,如果你的模型没有包含任何“名称”的数据,那么就没有在微调选择,所以你可能需要添加一些逻辑来处理。如果模型确实具有“名称”,则在用作适配器的数据源的原始列表中找到其索引。只有在发现事件时,才能将微调器的选择设置为同一索引。

+0

非常感谢...它像一个魅力 – 2014-02-14 10:38:57

2

我编程设定的微调值是这样的:

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