2012-06-22 2 views
4

미리 정의 된 메서드에 일련의 단추를 연결하는 필자가 작성한 사용자 지정보기가 있습니다. 이 버튼은 내가 만드는 뷰의 자식입니다.View 하위 클래스에서 findViewById를 사용할 수있는 가장 빠른 시간은 무엇입니까?

내 질문은 일련의 findViewById을 사용하도록 재정의하는 데 사용할 수있는 가장 빠른 방법은 무엇입니까? findViewById에 대한 호출은 null을 반환하므로 생성자에서 사용할 수 없다고 생각합니다. 감사합니다.

Brad.

+0

하는 경우 뷰 계층 구조가 복잡하지는 않습니다. 아마도 시도하지는 않았지만 아이를 반복하고 생성자의 ID를 비교하는 것이 가능할 수 있습니다. – reTs

답변

5

, 당신은 onFinishInflate을 무시하고이 방법 안에 findViewById를 사용할 수 있습니다

public void onFinishInflate() { 
    super.onFinishInflate(); 
    TextView view = (TextView) findViewById(R.id.view_id); 
    ... 
} 
2

findViewById을 통해 자녀를 액세스 할 수있는 가장 빠른시기는 레이아웃을 부 풀린 후입니다.

inflator.inflate(R.layout.main, this); 
Button b = (Button)findViewById(R.id.button01); 
0

당신이 옆에 findViewById를하려면 사용자 정의보기 onAttachedToWindow이 어떤 리스너를 설정하는 것이 유용 할 수있는 좋은 장소가 될 수 있지만, 다른 대체 방법 만 원한다면 나는 주로 다음과 같은 것을 이동 :

를 클래스는 ViewGroup의 하위 클래스 인 경우
View mView; 

View getView(){ 
    if(mView==null){ 
     mView=findViewById(...); 
    } 
    return mView; 
} 
관련 문제