2011-02-25 60 views
32

我有兩個spinners觸發onItemSelected事件。問題是我怎麼知道哪一個觸發了這樣的事件?到目前爲止,我嘗試過:多個spinners和onItemSelected

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
{ 

    Log.d("form","onitemselected"); 
    switch (view.getId()) { 
    case R.id.region_spinner: 
     Region r = (Region)sregions.getSelectedItem(); 
     Log.d("form","regionid:" + r.id); 
     break; 
    case R.id.state_spinner: 
     Log.d("form","state id:"); 
     break; 
    } 

但只顯示第一個日誌,所以沒有匹配的交換機。

回答

68

使用:

switch(parent.getId()) { 
    ... 
} 

反而是你所需要的。 您參數中的view是實際的「行」(即單擊的微調項目的子項),父項是您正在使用的實際「微調項目」。

+0

能否請您詳細說明一下例子? – AbdulSaleem 2017-12-08 07:21:04

+0

不知道是不是因爲不同的版本,但對我來說,它是:'adapterView.getId()'。希望這會幫助某人。 – 2018-03-02 13:49:10

2

Spinner是AdapterView的子類。傳遞給方法的父對象是選擇項目的微調器。