2012-05-07 5 views
1

나는 ListView을 가지고 있으며 사용자 정의 View, PostView을 가지고 있습니다.Android - ListView에 사용자 정의보기 추가

어떻게 new PostView()을 만들고, .addFooterView()를 통해 ListView에 추가 만, 여전히 PostView의 객체 표현에 액세스 할 수있는 가겠어요.

// the footer 
p = new PostView(this); 

p.setTargetUri(C.API_CONTENT); 
p.setRenderMode(PostView.MODE_TEXT | PostView.MODE_IMAGE); 

commentListView.addFooterView(p); 

을하지만이 팽창되어 있어야 XML의 구성 요소에 액세스하려고 할 때 즉, 실패 :

지금은 노력하고있어.

은 주로 :

public void setRenderMode(int renderMode) 
{ 
    this.renderMode = renderMode; 

    // fails 
    this.postImagePreview = (ImageView)findViewById(R.id.new_post_image_preview); 
} 

오전 나는이 문제에 대한 것? onFinishInflate()이 정의되어 있지만보기에 조기에 액세스하고있을 수 있습니까?

답변

0

나를위한 해결책은 다른 유형의보기를 반환 할 수있는 수퍼 사용자 지정 목록 어댑터를 사용하고 생성 된 목록 콘텐츠 주위에 머리글과 바닥 글보기를 수동으로 추가하는 것이 었습니다.

0

나중에 findViewById를 호출하는 대신 멤버 변수의 인스턴스에 멈추지 않는 이유는 무엇입니까?

+0

나는 잘 모르겠다. 이 줄은 :'this.postImagePreview = (ImageView) findViewById (R.id.new_post_image_preview); }'는'PostView.class' 내부에서 호출되고 정의됩니다. 따라서 특정 XML을 언제 액세스 할 수 있는지 확실하지 않습니다. – Josh

0

setRenderMode는 PostView 또는 PostView를 사용하는 활동 내에 있습니까? 이 활동에 있으면

, 당신은 일을해야한다 :

this.postImagePreview = (ImageView)p.findViewById(R.id.new_post_image_preview); 

p는 당신이 만든 당신의 POSTVIEW에 대한 참조 인 상태.

+0

'PostView' 내에 있습니다. 새로운'PostView'를 생성 한 후,'ListView'에 꼬리말을 붙이기 전에' p.setRenderMode (PostView.MODE_TEXT | PostView.MODE_IMAGE);'를 호출합니다. – Josh

+0

아, 알겠습니다. 당신이 너무 일찍 그 견해를 얻으려고하는 것 같습니다. 대신 oncreate() 메서드를 사용하는 것이 좋습니다. View 객체에 대한 뷰 중 하나가 있다고 생각합니다. –

관련 문제