2017-12-05 18 views
1

GridLayout에 18 개의 스피너가 있으며, 액티비티 레이아웃에서 수동으로 각 노드에 할당 된 값 (어댑터 없음)이 있습니다. 이제 메서드를 호출하는 "지우기 버튼"을 원합니다. 즉, 각 회 전자를 기본값으로 설정하는 "onClickClear"가 필요합니다.많은 스피너를 기본값으로 설정합니다.

18 개의 스피너에 대한 참조를 작성하고 setSelection (0)을 사용하지 않고이를 수행 할 수있는 방법이 있습니까? 나는 안드로이드 꽤 새로 온 사람이 내가 :) pos가 배열 아래 다음과 같이 = 0 POS 정수 (배열 항목 위치)

입니다 여기

+1

아니요 가능하지 않다고 생각합니다. 회 전자에 대한 참조가 있어야합니다. – Sunny

답변

0

단지 회 전자 배열을 모두 추가 스피너 [] 스피너 같은 새로운 스피너 = [18]; then spinners [0] = findViewById ... 그런 식으로 for 루프를 사용하여 모든 것을 기본값으로 쉽게 설정할 수 있습니다. for (회 전자 회 전자 : 회 전자) 회 전자 .setSelection (0)

+0

네 이것은 약간을 단순화하는 것처럼 보인다. 이것이 제가 찾고 있던 것입니다. 대단히 감사합니다. – AndroidDroid

0
Spinner sp = (Spinner)findViewById(R.id.spinner); 
sp.setSelection(pos); 

하고있어 개념 프로젝트의 증거입니다 ;

String str[] = new String{"Select Gender","male", "female" }; 

onItemSelected 다음에

@Override 
public void onItemSelected(AdapterView<?> main, View view, int position, 
     long Id) { 

    if(position > 0){ 
     // get spinner value 
    }else{ 
     // show toast select gender 
    } 

} 
+0

예, 이것이 표준 방법이라고 생각합니다.하지만 회 전자가 18 개인 경우 긴 여정이 될 것입니다. 나는 어쩌면 짧고 우아함을 위해서 적어도 이것을하는 더 역동적 인 방법이 있다고 생각했다;) – AndroidDroid

1

가장 위험한 방법은 아니지만 가장 좋은 방법은 아닙니다.

것은 아이들
for (int i = 0; i < viewGroup.getChildCount(); i++) { 
    View currentView = viewGroup.getChildAt(i); 
    if (currentView instanceof Spinner) { 
     ((Spinner) currentView).setSelection(0); 
    } 
} 

또는 당신이 그들에 배열과 루프에서 그들을 막을 수의를 통해 자신의 부모와 루프에 대한 참조를 찾아,하지만 당신은 그들에게 배열을 채우려면 18 시간을 찾을 수있다.

+0

이 접근법이 최선이 아닌 이유에 대해 자세히 설명해 주시겠습니까? 인사말 .. – AndroidDroid

+0

개인적으로, 나는 instanceof가있는 솔루션이 마음에 들지 않습니다. 조금 해킹 된 것처럼 느껴지지만, 변경없이 스피너를 추가하거나 제거하더라도 솔루션은 작동 할 것입니다. 노력의 측면에서 보면 가장 간단합니다. 일을 마쳤다. – elmorabea

관련 문제