具有不同显示和返回值的微调器

时间:2015-01-14 04:50:58

标签: android spinner android-arrayadapter

我想创建一个显示月份的微调器,例如“1月,2月等”。从那个微调器,我想传递在“1,2等”中选择的值而不是微调器显示的值。有什么建议可以解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

使用这个简单的代码

ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, yourItemsArray);
    adapter_state
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    yourSpinner.setAdapter(adapter_state);
    yourSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub
            int position = yourSpinner
                    .getSelectedItemPosition() + 1;
            // position is your selected position
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

答案 1 :(得分:0)

使用Spinner.getSelectedItemPosition()+ 1;添加1因为它从0,1,2 ...

开始

答案 2 :(得分:0)

创建一个pojo类:

public class SpinnerUtils {
     public SpinnerUtils(String spinnerText, int value) {
         this.spinnerText = spinnerText;
         this.value = value;
     }

     public String getSpinnerText() {
         return spinnerText;
     }

     public int getValue() {
         return value;
     }

     public String toString() {
         return spinnerText;
     }

     String spinnerText;
     int value;
 }

然后:

SpinnerUtils items[]=new SpinnerUtils[array.length()];
items[i] = new SpinnerUtils(c.getString("name"), c.getInt("id"));   

for (int i = 0; i <array.length(); i++) {
    items[i] = new SpinnerUtils(c.getString("name"), c.getInt("id"));                       
}

ArrayAdapter<SpinnerUtils> adapter = new ArrayAdapter<SpinnerUtils> . 
                           (this,android.R.layout.simple_spinner_item, items);


adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)

s.setAdapter(adapter);

其中s是你的微调器。要检索ID:

 SpinnerUtils d = items[position];
 int standard = d.getValue(); 

在微调器的setOnItemSelectedListener内创建上面两行以获取id。我给了你一个粗略的想法。希望它可以工作。