2010-06-14 5 views
1

3 개의 회 전자에서 현재 선택된 옵션을 기반으로 TextView를 채우려고하지만 회 전자에서 선택한 값을 검색하는 방법을 찾지 못하는 것 같습니다 를 사용하여 업데이트 함수를 호출합니다. 여기에 내 현재 코드입니다 (아주 지저분하지만 난 그냥 :) 자바를 배우고)이와ButtonClick의 TextView를 회 전자 값으로 업데이트하는 방법

public class AgeFun extends Activity { 
private String[] dayNames; 
private String[] yearArray; 
private final static int START_YEAR = 1990; 
private static TextView textDisp; 
private Button calcButton; 
private static Spinner spinnerDay, spinnerYear, spinnerMonth; 
private static ArrayAdapter<?> monthAdapter, dayAdapter, yearAdapter; 
private int year, month, day; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    year = 2000; 
    month = 1; 
    day = 1; 
    textDisp = (TextView) findViewById(R.id.textView1); 
    calcButton = (Button) findViewById(R.id.button); 
    calcButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      // Perform action on clicks 
      AgeFun.updateAge(year, month, day); 
     } 
    }); 

    // Month spinner 
    spinnerMonth = (Spinner) findViewById(R.id.spinnerFirst); 
    monthAdapter = ArrayAdapter.createFromResource(
      this, R.array.monthList, android.R.layout.simple_spinner_item); 
    monthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinnerMonth.setAdapter(monthAdapter); 

    // Day spinner 
    dayNames = new String[31]; 
    for(int i =1; i <= 31; ++i) 
    { 
     dayNames[i-1] = Integer.toString(i); 
    } 
    spinnerDay = (Spinner) findViewById(R.id.spinnerSecond); 
    dayAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, dayNames); 
    spinnerDay.setAdapter(dayAdapter); 

    // Year spinner 
    yearArray = new String[40]; 
    for(int i =0; i < 40; ++i) 
    { 
     yearArray[i] = Integer.toString(START_YEAR+i); 
    } 
    spinnerYear = (Spinner) findViewById(R.id.spinnerThird); 
    yearAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, yearArray); 
    spinnerYear.setAdapter(yearAdapter); 

    updateAge(2000,1,1); 
} 

private static void updateAge(int year, int month, int day) { 
    Date dob = new GregorianCalendar(year, month, day).getTime(); 
    Date currDate = new Date(); 

    long age = (currDate.getTime() - dob.getTime())/(1000 * 60 * 60 * 24)/365; 
    textDisp.setText("Your are " + Long.toString(age) + " years old"); 
} 

}

어떤 도움이 좋을 것.

TIA

답변

0

당신은 getSelectedItem와 현재의 스피너 값을 얻을 수 있습니다. 배열 어댑터에 CharSequence를 채웠으므로 선택한 항목이 될 유형입니다.

또는 ArrayAdapter를 사용하고 int를 직접 처리 할 수 ​​있어야합니다. 스피너는 제공된 객체 유형의 toString 메소드를 사용했다고 생각합니다.

편집 :

AdapterView.OnItemSelectedListener listener = new AdapterView.OnItemSelectedListener() { 
     onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      updateAge(); 
     } 
    } 
    dayAdapter.setOnItemSelectedListener(listener); 
    .... 

    private void updateAge() { 
     int day = spinnerDay.getSelectedItem(); 
     .... 
    } 
1

아마이 코드는 (당신이 당신의 어댑터 항목을 찾을 위치 또는 ID를 사용)하는 데 도움이 : 나는 중요한 부분을 놓친, 즉, 스피너의 각에 onItemSelected 리스너를 추가

spnCountries.setOnItemSelectedListener(spnCountriesListener); 


private Spinner.OnItemSelectedListener spnCountriesListener = 

    new Spinner.OnItemSelectedListener() { 

    public void onItemSelected(AdapterView parent, View v, int position, long id) { 

     Log.i("print", parent.getSelectedItem().toString()); 

    } 



    public void onNothingSelected(AdapterView parent) { }    

}; 
관련 문제