Java Android-将自定义视图添加到ListView
我有一个ListView,还有一个自定义视图PostView 如何创建一个新的PostView,并通过.addFooterView将其添加到ListView,但仍然能够访问PostView的对象表示形式 现在我正在尝试:Java Android-将自定义视图添加到ListView,java,android,xml,layout,Java,Android,Xml,Layout,我有一个ListView,还有一个自定义视图PostView 如何创建一个新的PostView,并通过.addFooterView将其添加到ListView,但仍然能够访问PostView的对象表示形式 现在我正在尝试: // the footer p = new PostView( this ); p.setTargetUri( C.API_CONTENT ); p.setRenderMode( PostView.MODE_TEXT | PostView.MODE_IMAGE ); com
// 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,但可能是过早地访问了视图?为什么不在成员变量中保留实例,而不是稍后调用findViewById?您的setRenderMode是在PostView中还是使用PostView的活动 如果是在活动中,您应该做:
this.postImagePreview = (ImageView)p.findViewById( R.id.new_post_image_preview );
p是对您创建的PostView的引用。我的解决方案是使用一个超级自定义列表适配器,该适配器能够返回不同类型的视图,并在生成的列表内容周围手动添加页眉和页脚视图。我不确定是否遵循。此行:This.postmagepreview=imageviewfindviewbyd R.id.new\u post\u image\u preview;}在PostView.class内部调用和定义。所以,我不确定那个特定的XML什么时候可以访问,它在PostView中。您将看到,在我创建一个新的PostView之后,我调用'p.setRenderMode PostView.MODE_TEXT | PostView.MODE_IMAGE;,在我将其作为页脚附加到ListView之前。啊,是的,我明白了。看起来你试图过早地获得视图。不如改用oncreate方法。我认为有一种是用于查看对象的。