2013-10-26 120 views
0

我遇到的問題是,我想要spinner2填充後,我選擇(例如)加拿大,但由於某種原因spinner2得到填充啓動時,而不是在我選擇加拿大後。我也連接了一個字符串數組到spinner2,以確保它會啓動但沒有任何功能,但仍然無法工作。以下是我迄今爲止:微調不能正常工作

public class MainActivity extends Activity { 

    private Spinner spinner1, spinner2; 
    private Button button; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  

     addListenerOnButton(); 
     addListenerOnSpinnerItemSelection(); 
     spinner1 = (Spinner) findViewById(R.id.spinner1); 

     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
     R.array.countries, 
     android.R.layout.simple_list_item_1); 

     spinner1.setAdapter(adapter); 

     spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { 
      public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { 
       TextView tv = (TextView)v; // cast the View to a TextView 
       if ("Canada".equals(tv.getText().toString())); 
       { 
        addItemsOnSpinner2(); 
       } 
      } 

      public void onNothingSelected(AdapterView<?> arg0) { 

      } 
     }); 
    }  


    // add items into spinner dynamically 

    public void addItemsOnSpinner2() {  

     spinner2 = (Spinner) findViewById(R.id.spinner2); 
     List list = new ArrayList(); 
     list.add("hello"); 
     list.add("holla"); 
     list.add("hey"); 
     list.add("hi"); 
     ArrayAdapter dataAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, list); 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner2.setAdapter(dataAdapter); 
    }  



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


    }  

    public void addListenerOnButton() {  

     button = (Button) findViewById(R.id.button1); 

     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

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

     }); 
    }  
}  

Spinner2.java *

public class Spinner2 implements OnItemSelectedListener {  

    @Override 
    public void onItemSelected(AdapterView parent, View view, int pos, long id) { 
     Toast.makeText(parent.getContext(), 
      parent.getItemAtPosition(pos).toString(), 
      Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView parent) { 

    } 
}  

回答

0

這裏的交易。當微調剛剛沒有你選擇創建onItemSelected方法仍稱任何選項。這樣做的一個簡單的解決方法是在轉添加額外的選項liek「選擇」或「無」,並在onItemSelected方法就是這樣的一個if-else結構: -

@Override 
public void onItemSelected(AdapterView parent, View view, int pos, long id) { 
    if(pos==0) { 
     //do something; 
    } else { 
     Toast.makeText(parent.getContext(), 
      parent.getItemAtPosition(pos).toString(), 
      Toast.LENGTH_SHORT).show(); 
    } 
} 
0

正如@ d3m0li5h3r正確地提到

當微調剛剛被初始化

onItemSelected方法仍稱所以,這裏是不是在轉添加額外的元素的解決辦法,..

spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { 
    boolean check = false; 

       public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { 
       if(count){ 
        TextView tv = (TextView)v; // cast the View to a TextView 
        if ("Canada".equals(tv.getText().toString())); 
        { 
         addItemsOnSpinner2(); 
        } 
       } 
        check = true; 
       } 

       public void onNothingSelected(AdapterView<?> arg0) { 

       } 
      }); 
+0

我通過將「count」替換爲「pos == 0」來實現它。 0 =微調器內的第一項 – Zamornews