1

我有一个ListView,我有一个习惯ViewPostView

我将如何去创建一个new PostView(),并将其添加到ListViewvia .addFooterView(),但仍然能够访问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()定义,但也许我过早地访问了视图?

4

3 回答 3

0

我的解决方案是只拥有一个超级自定义列表适配器,它能够返回不同类型的视图,并在生成的列表内容周围手动添加页眉和页脚视图。

于 2012-05-16T15:03:22.077 回答
0

为什么不挂在成员变量中的实例而不是稍后调用 findViewById 呢?

于 2012-05-07T20:38:59.707 回答
0

您的 setRenderMode 是在 PostView 中还是在使用 PostView 的 Activity 中?

如果它在活动中,您应该这样做:

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

其中 p 是对您创建的 PostView 的引用。

于 2012-05-07T20:41:47.040 回答