2011-02-25 1 views
32

나는 onItemSelected 이벤트를 발생시키는 두 개의 회 전자를 가지고 있습니다. 문제는 그 사건을 유발 한 사건이 무엇인지 어떻게 알 수 있습니까? 지금까지 내가 시도 :여러 회 전자 및 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

+0

다른 버전 때문인지 모르겠지만 나를 위해 : adapterView.getId()'. 희망이 사람을 도울 것입니다. –

2

Spinner는 AdapterView의 하위 클래스입니다. 메서드에 전달 된 부모 객체는 항목이 선택된 스피너입니다.