2013-07-09 2 views
1

사용자가 항목을 선택하면 회 전자가 값을 반환하길 원합니다.회 전자 선택에서 값 얻기

버튼을 사용한 다음 OnClick()에서 spinner.getSelectedItemPosition()을 사용할 수 있지만 사용자가 회 전자 선택 사항 중에서 선택하면 곧바로 값이 반환되기를 원합니다. 따라서 OnItemSelectedListener를 사용하려고 생각했습니다. 방법은 void 반환 유형이 같은

int valueINeed; 
subGoalSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      int index = arg0.getSelectedItemPosition(); 
      //I now want to somehow get the value of the index for use outside of this code block 
} 

나는 분명히 직선 return 문을 사용할 수 없습니다. 또한, 나는 final 값을 만들지 않으면 valueINeed = index을 설정할 수 없습니다. 사용자가 마음을 바꾸고 값을 재 할당해야하는 경우 어떻게 될지 확실하지 않습니다.

감사합니다.

+0

선택한 이벤트 내부에서 선택한 인덱스를 설정하는 데 필요한 사항은 무엇입니까? 회 전자에는 필요한 경우 색인을 얻기 위해 설명한 방법이 이미 있습니다. – chancea

답변

0

TronicZomB의 답변은 정확하지만 전역 변수가 변경되면 알림을받지 못합니다.

  1. 별도의 함수를 만듭니다 valueINeed를 사용하는 코드를 타고 onItemSelected 기능
  2. 의 그 모든 내부를 넣어 : 당신은 즉시이 Spinner에 변경된으로 valueINeed 뭔가를해야 할 경우 두 가지 옵션이 있습니다 onItemSelected 함수 내에서 호출하는 # 2

예 :이 경우

subGoalSpinner.setOnItemSelectedListener(new OnItemSelectedListener() 
{ 
    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
    { 
     valueINeed = subGoalSpinner.getSelectedItemPosition(); 
     updateView(valueINeed); 
    } 
} 

updateView 매개 변수로 valueINeed에 걸리고 (a TextView를 업데이트하는 등) 함께 일을 수행하는 기능이다.

+0

고마워! 그게 정확히 내가 찾고 있던거야! 나는 onItemSelected가 인수를 취하는 방법을 생각하려고 노력했다. 어떤 이유로 나는 내 자신의 방법을 만들지 못했다. XD 또한 변수를 전역 변수로 만들고 싶을 때' 마지막 값을 'subGoalSpinner.setOnItemSelectedListener ('??? – cshadowstar

+0

)라고 선언하기 전에 언젠가 배치해야한다면, 최종적으로 수정할 수는 없을 것입니다. 클래스의 내부와 외부에서 직접 선언하십시오. 'onCreate'와 같은 어떤 메소드라도 사용할 수 있습니다. 단순히 'int value'를 수행하십시오. – crocboy

+0

감사합니다. – cshadowstar

1

변수 int valueINeed;을 전역 변수로 선언하기 만하면됩니다. 다음을 사용할 수 있습니다.

subGoalSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, 
      int arg2, long arg3) { 
     valueINeed = subGoalSpinner.getSelectedItemPosition(); 
     //I now want to somehow get the value of the index for use outside of this code block 
} 
+0

고마워요! 그러나 나는 이미 이것을 생각하면서 전역 변수의 변화가 일어 났을 때 더 많이 알기를 원했고 또 다른 대답을 받아 들였다. – cshadowstar