2016-02-29 1 views
1

Я создаю конвертер (расстояние) 4 Android. Моя идея заключалась в следующем:с использованием счетчика конвертера

  1. EditText - пользователь поставил значение f.e. 40
  2. два спиннера - сначала для установки начального устройства и второго для установки целевого блока f.e. первые [см] вторые [м]
  3. TextView с результатом
  4. Кнопки вычисления

Я делал функцию с вычислительными значениями, проблема заключается в том, как выбрать единицы это мой код, который не работает

spinnerP = (Spinner) findViewById(R.id.spinnerPocz); 
    ArrayAdapter<CharSequence> adapterP = ArrayAdapter.createFromResource(this, R.array.odlegloscArray, R.layout.support_simple_spinner_dropdown_item); 
    adapterP.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item); 
    spinnerP.setAdapter(adapterP); 

    spinnerP.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      //Toast.makeText(getBaseContext(), parent.getItemIdAtPosition(position) + " selected", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 

    spinnerD = (Spinner) findViewById(R.id.spinnerDoc); 
    ArrayAdapter<CharSequence> adapterD = ArrayAdapter.createFromResource(this, R.array.odlegloscArray, R.layout.support_simple_spinner_dropdown_item); 
    adapterD.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item); 
    spinnerD.setAdapter(adapterD); 

    spinnerD.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      if (spinnerP.getItemAtPosition(position) == 0) { 
       switch (position) { 
        case 0: 
         Toast.makeText(getApplicationContext(), "zmień wartość docelową", Toast.LENGTH_SHORT).show(); //units the same 
         break; 
        case 1: 
         btnOblicz.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           metryNaKm(); //meters to km 
          } 
         }); 
         break; 
        case 2: 
         btnOblicz.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           metryNaCm(); //meters to cm 
          } 
         }); 
         break; 
        case 3: 
         btnOblicz.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           metryNaCale(); //meters to inch 
          } 
         }); 
         break; 
//etc. 
//then there is 
else if (spinnerP.getItemAtPosition(position) == 1) { 
       switch (position) { 
        case 0: 
         btnOblicz.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           kilometryNaM(); //km to meters 
//etc 

Я думаю, что делает его, как это ужасно, но I'mma не продвинулся, я открыт для предложений

ответ

0

что вы должны сделать - удалить все ваши OnItemselectedListeners и использовать только одну кнопку OnClickListener для вашей кнопки. Затем используйте getSelectedItemPosition.

btnOblicz.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

      int selectedP = spinnerP.getSelectedItemPosition(); 
      int selectedD = spinnerD.getSelectedItemPosition();   

      switch(selectedP){ 
      case 0: 
        switch(selectedD){ 
         case 1: 
          convertFrom0to1(); 
          break; 
         case 2: 
          convertFrom0to2(); 
         .... 
        } 
        break; 
      .... 
      } 
    } 
}); 
+1

thank U очень много работает;) – woochuck