2016-04-05 4 views
1

У меня есть один счетчик со списком частей тела, например. грудь, ноги, спина. У меня также есть строковые массивы для каждой части тела со списком упражнений для этой части тела, например. для сундука у меня есть массив струн, называемый упражнением на грудную клетку, с выбором упражнений, таких как жим лежа, гантели и т. д. Так, например, я хотел бы заполнить второй счетчик упражнением сундука, если был выбран сундук или упражнение на ноге, если была выбрана нога. Любые иды?заполняющий счетчик на основе другого выбора счетчика

String[] chestExercises = {"Flat Barbell Bench Press", "Incline Barbell Bench Press", 
      "Decline Barbell Bench Press", "Flat Dumbbell Press", "incline Dumbbell Press", "Decline Dumbbell Press", 
      "Cable Flys", "Dumbbell Flys",}; 


    public void addListenerOnSpinnerItemSelection() { 
    spinner1 = (Spinner) findViewById(R.id.spinner1); 
    spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener()); 


    } 


    public void addListenerOnButton() { 

    spinner1 = (Spinner) findViewById(R.id.spinner1); 
    spinner2 = (Spinner) findViewById(R.id.spinner2); 
    btnSubmit = (Button) findViewById(R.id.btnSubmit); 



    btnSubmit.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Toast.makeText(record_workout.this, 
        "OnClickListener : " + 
       "\nSpinner 1 : " + String.valueOf(spinner1.getSelectedItem())+ 
       "\nSpinner 2 : String.valueOf(spinner2.getSelectedItem()), 
        Toast.LENGTH_SHORT).show(); 
     } 

    }); 
} 

ответ

1

Все, что вам нужно сделать, это проверить вход Spinner1, и на основе этого, установите адаптер массива, который соответствует spinner2 на основе пользовательского ввода, соответствующего определенной ArrayList:

Я написал это код для вас, чтобы получить лучшую идею, и добавили в него некоторые комментарии, поэтому проверьте их тоже.

public void addListenerOnSpinnerItemSelection() { 
    ArrayList<MyObject> Chest = new ArrayList<MyObject>(); // This is actually the list created from the HashMap 
    ArrayList<MyObject> Knee = new ArrayList<MyObject>(); // This is actually the list created from the HashMap 
    ArrayList<MyObject> Head = new ArrayList<MyObject>(); // This is actually the list created from the HashMap 

    spinner1 = (Spinner) findViewById(R.id.spinner1); 
    spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener()); 
} 


public void addListenerOnButton() { 
    spinner1 = (Spinner) findViewById(R.id.spinner1); 
    spinner2 = (Spinner) findViewById(R.id.spinner2); 
    btnSubmit = (Button) findViewById(R.id.btnSubmit); 

    btnSubmit.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(record_workout.this, 
          "OnClickListener : " + 
          "\nSpinner 1 : " + String.valueOf(spinner1.getSelectedItem())+ 
          "\nSpinner 2 : " + String.valueOf(spinner2.getSelectedItem()), 
          Toast.LENGTH_SHORT).show(); 

      ArrayAdapter<MyObject> adapter = null; 

      if(spinner1.getSelectedItem().equals("Chest"){ 
       adapter = new ArrayAdapter<ObjectName>(this, android.R.layout.simple_spinner_item, Chest); 
      } else if (spinner1.getSelectedItem().equals("Knee"){ //INPUT = KNEE SO SET ADAPTER TO KNEE ARRAY LIST 
       adapter = new ArrayAdapter<ObjectName>(this, android.R.layout.simple_spinner_item, Knee); 
      } else if (spinner1.getSelectedItem().equals("Head"){ 
       adapter = new ArrayAdapter<ObjectName>(this, android.R.layout.simple_spinner_item, head); 
      } 

      if (adapter != null) { 
       spinner2.setAdapter(adapter); 
       adapter.notifyDataSetChanged(); 
      } 
     }); 
    } 
} 

Что я здесь сделал, я проверил входной сигнал в первом счетчике вашего слушателя. Затем я проверил, соответствует ли это «голова», «сундук» или «колено», и если это так, я установил ArrayAdapter для Spinner 2 на соответствующий ArrayList.

Дайте мне знать, если это поможет.

+0

Спасибо за код, но я не могу заставить его работать. Я редактирую исходное сообщение, которое теперь включает в себя массив упражнений для грудной клетки. поэтому, когда выбран сундук, я хотел бы, чтобы содержимое массивов отображалось – Ryan159

+0

, оно не работает. Я понимаю, что вы пытаетесь сделать, но я не понимаю эту часть: ArrayList Chest = new ArrayList (); – Ryan159

+0

Это список массивов под названием «Грудь», который заполняется вашими значениями, которые вы хотите использовать в прядильщике, когда пользователь выбирает «сундук» –

Смежные вопросы