2012-05-07 17 views
1

私はListViewを持っていて、私はカスタムView,PostViewを持っています。Android - リストビューにカスタムビューを追加

どのように私は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が作成したあなたのポストビューを参照することで。

+0

これは 'PostView'の中にあります。新しい 'PostView'を作成した後、' ListView'にフッターとして添付する前に ' p.setRenderMode(PostView.MODE_TEXT | PostView.MODE_IMAGE);'を呼び出します。 – Josh

+0

ああそうだね。あまりにも早い時期にその眺めを取得しようとしているようです。代わりにoncreate()メソッドを使うのはどうでしょうか? Viewオブジェクトの1つがあると思います。 –

関連する問題