2013-07-26 40 views
0

我有三個不同的微調對象(其中兩個有一個自定義佈局,一個 - spMode - 是標準的)。Android微調OnItemSelect不工作

當OkayButton被按下時,Toast應該顯示3個數字:模式的SpinnerItemNumber,Color1和Color2。但每次按下按鈕時模式都是0。其他人工作正常。 Just Mode顯示,即使我在應用程序中選擇了項目2或3,也會選擇項目0。

這裏是相關的代碼;任何想法爲什麼?

public class NewTimer extends Activity implements OnItemSelectedListener,OnClickListener 
    { 
    Button btnOkay; 
    EditText etTime; 
    int mode, minutes, color1, color2; 
    String[] strings = {"","", 
     "", "", "", ""}; 

    int arr_images[] = { R.drawable.yellow, 
     R.drawable.orange, R.drawable.red, 
     R.drawable.blue, R.drawable.green, R.drawable.white}; 

    public void onClick(View v) 
    { 
     if (v == btnOkay) 
     { 
      Toast.makeText(v.getContext(), Integer.toString(mode) + Integer.toString(color1) + Integer.toString(color2), Toast.LENGTH_SHORT).show(); 
     } 
    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.newtimer); 
     Spinner spColor1 = (Spinner)findViewById(R.id.spColor1); 
     spColor1.setAdapter(new MyAdapter(NewTimer.this, R.layout.row, strings)); 
     spColor1.setOnItemSelectedListener(this); 
     Spinner spColor2 = (Spinner)findViewById(R.id.spColor2); 
     spColor2.setAdapter(new MyAdapter(NewTimer.this, R.layout.row, strings)); 
     spColor2.setOnItemSelectedListener(this); 
     etTime = (EditText) findViewById(R.id.etTime); 
     btnOkay = (Button) findViewById(R.id.btnOkay); 
     btnOkay.setOnClickListener(this); 

     Spinner spMode = (Spinner) findViewById(R.id.spMode); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
                      R.array.spMode_items, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spMode.setAdapter(adapter); 
    } 

    public void onItemSelected(AdapterView<?> parent, 
           View v, int pos, long id) 
    { 
     switch (parent.getId()) 
     { 
      case R.id.spMode: 
       mode = pos; 
       break; 

      case R.id.spColor1: 
       color1 = pos; 
       break; 

      case R.id.spColor2: 
       color2 = pos; 
       break; 
     } 
    } 

    public void onNothingSelected(AdapterView<?> parent) 
    { 

    } 



    public class MyAdapter extends ArrayAdapter 
    { 
     public MyAdapter(Context context, int textViewResourceId, 
         String[] objects) 
     { 
      super(context, textViewResourceId, objects); 
     } 

     @Override 
     public View getDropDownView(int position, View convertView, ViewGroup parent) 
     { 
      return getCustomView(position, convertView, parent); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 
      return getCustomView(position, convertView, parent); 
     } 
     public View getCustomView(int position, View convertView, ViewGroup parent) 
     { 
      LayoutInflater inflater=getLayoutInflater();View row=inflater.inflate(R.layout.row, parent, false); 
      TextView label=(TextView)row.findViewById(R.id.color); 
      label.setText(strings[position]); 
      ImageView icon=(ImageView)row.findViewById(R.id.image); 
      icon.setImageResource(arr_images[position]); 
      return row; 
     } 
    } 
    } 

回答

1

你從來沒有設置該微調的setOnItemSelectedListener

@Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.newtimer); 
    Spinner spColor1 = (Spinner)findViewById(R.id.spColor1); 
    spColor1.setAdapter(new MyAdapter(NewTimer.this, R.layout.row, strings)); 
    spColor1.setOnItemSelectedListener(this); 
    Spinner spColor2 = (Spinner)findViewById(R.id.spColor2); 
    spColor2.setAdapter(new MyAdapter(NewTimer.this, R.layout.row, strings)); 
    spColor2.setOnItemSelectedListener(this); 
    etTime = (EditText) findViewById(R.id.etTime); 
    btnOkay = (Button) findViewById(R.id.btnOkay); 
    btnOkay.setOnClickListener(this); 

    Spinner spMode = (Spinner) findViewById(R.id.spMode); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
                     R.array.spMode_items, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spMode.setAdapter(adapter); 
    spMode.setOnItemSelectedListener(this); } 

public void onItemSelected(AdapterView<?> parent, 
          View v, int pos, long id) { 
    switch (parent.getId()) 
    { 
     case R.id.spMode: 
      mode = pos; 
      break; 

     case R.id.spColor1: 
      color1 = pos; 
      break; 

     case R.id.spColor2: 
      color2 = pos; 
      break; 
    } } 
+0

哦男人TY。我忘了。非常感謝 – Stupe

+0

沒問題。不要忘記,您可以點擊旁邊的複選標記將此答案標記爲有用/可接受的答案。 – TronicZomB