fiasco
fiasco

Reputation: 261

setting itemListener of variable number of spinners

    int numberofSpinner = TransportResult.Transfers.size();
    Spinner spin=null;
    for(int i=0;i<numberofSpinner;i++)
    {
        spin = new Spinner(this);
        LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT,1);
        spinLayout.addView(spin,p);
        spin.setId(i);
        Transfer transfer = TransportResult.Transfers.get(i);
        ArrayList<CharSequence> s = new ArrayList<CharSequence>();
        for( Line l : transfer.TransferLine)
        {
            s.add(l.ShortName+" - "+Helper.FindTransportTypeText(l.LineType));
        }
        adapter = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item,s);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spin.setAdapter(adapter);
    }
    spin.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View view,
                  int position, long id) {
           if(parent.getId()==0){
       System.out.println("spin 1 is called");
               String str = (String)parent.getSelectedItem(); 
         }else if(parent.getId()==1){
       System.out.println("spin 2 is called");
               String str = (String)parent.getSelectedItem();  
     }
         }   
      public void onNothingSelected(AdapterView<?> arg0) {

          }
      });

If the number of spinner is more than 1, only the last spinner is triggered. For example; i have 3 spinner on screen, when i select the item of first or second spinner, the listener is never triggered. Only the third spinner triggers the listener. How can i solve that?

Thank you

Upvotes: 0

Views: 429

Answers (1)

Samir Mangroliya
Samir Mangroliya

Reputation: 40416

UPDATE

when you use more than one spinner then setid for each spinner spin.setId(int) .and you can check id in OnItemSelected method. Mind that when you set OnitemSelected first time onItemSelected is called.

 spin.setOnItemSelectedListener(new OnItemSelectedListener() {
              @Override
               public void onItemSelected(AdapterView<?> parent, View view,
                        int position, long id) {

                 if(parent.getId()==1){
             System.out.println("spin 1 is called");
                     String str = (String)parent.getSelectedItem(); 
               }else if(parent.getId()==2){
             System.out.println("spin 2 is called");
                     String str = (String)parent.getSelectedItem();  
           }
               }   
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

                }
            });

Upvotes: 1

Related Questions