2012-07-25 6 views
-1

여러 텍스트 뷰에 결과를 저장하는 앱을 만들고 있습니다. 첫 번째로 뷰를 가져와야합니다.이 뷰는 결과 1이라는 20 개의 뷰입니다. 결과 20. 어떻게 할 수 있습니까? 그들을 textview의 배열로 가져와라. , 나는이 방법을 발견하지만, 텍스트보기가 포함 레이아웃, 당신은 재귀 적으로이 같은 기능을 발견 할 수있는 부모에 대한 핸들이있는 경우는 TextViews 배열 가져 오기

TextView [] results = {(TextView)findViewById (R.id.result1), 
      (TextView)findViewById (R.id.result2),(TextView)findViewById (R.id.result3), 
      (TextView)findViewById (R.id.result4),(TextView)findViewById (R.id.result5), 
      (TextView)findViewById (R.id.result6).....}; 

도움이

+0

"너무 오랫동안"는 무엇을 의미합니까? 너무 오래 뭘? – Kaediil

+0

나는 아주 큰 코드를 작성해야하는데, 나는이 레이아웃에서만 20 textview를 가지고 있고 나는 3 개의 레이아웃을 가지고있다. – Abol3z

+0

다른 방법은 없습니다. 여러 텍스트 뷰 대신 ListView를 사용할 수도 있습니다. – Kaediil

답변

0

시작한 방법이 올바른지, 지금 반복적 인 코드를 주기로 생각해보십시오.

예를 들어 TextView 리소스의 배열을 입력으로 사용하고 "for"사이클을 사용하면 해당 ID로 해당 뷰를 찾을 수있는 메서드를 디자인하십시오.

private TextView[] initTextViews(int[] ids){ 

     TextView[] collection = new TextView[ids.length]; 

     for(int i=0; i<ids.length; i++){ 
      TextView currentTextView = (TextView)findViewById(ids[i]); 
      collection[i]=currentTextView; 
     } 

     return collection; 
} 

그리고는이처럼 사용

// Your TextViews ids 
int[] ids={R.id.result1, R.id.result2, R.id.result3}; 

// The resulting array 
TextView[] textViews=initTextViews(ids); 
+0

이것이 제가해야 할 방법입니다. – Abol3z

+0

질문이 있습니다 ... 어떻게 R.id.result1을 정수 배열의 요소로 사용할 수 있습니까 ?? – Abol3z

+0

메소드의 매개 변수를 Integer 배열을 허용하도록 변경하십시오. initTextViews (Integer [] ids). 그리고 자원 배열을 Integer 배열에도 저장하십시오. Integer [] ids = {R.id.result1, R.id.result2, R.id.result3}; –

0

주셔서 감사합니다 너무 오래입니다

void getTextViews(View view, List<TextView> textViews) { 
    if (view instanceof TextView) { 
    textviews.add((TextView)view); 
    else if (TextView instanceof ViewGroup) { 
    getTextViews((ViewGroup)view, textViews); 
    } 
} 

지금과 같이 호출

ViewGroup topLayout = findViewById(...); 
List<TextView> views = new ArrayList<TextView>(); 
getTextViews(topLayout, views); 
TextView[] textViewArray = textViews.toArray(new TextView[0]); 

상당히 길지만 텍스트 뷰를 추가, 제거 또는 이름을 바꾸면 코드를 변경할 필요가 없다는 장점이 있습니다.

IMHO, 적은 코드 작성, 명확한 코드 작성에 중점을 두지 마십시오. 입력하는 속도가 생산성의 제한 요소가되는 경우는 거의 없습니다.

+0

그 textviewParent.getChildAt (i) instanceof TextView –

+0

이 유용하다는 것을 잊지 말고 이것은 유용하다. 그러나 한 부모에게는 매 5 textviews마다 4 명의 부모가있다. – Abol3z

+0

괜찮습니다. 편집을 참조하십시오. –