【问题标题】:Android - Add Custom View to ListViewAndroid - 将自定义视图添加到 ListView
【发布时间】:2012-05-07 20:13:04
【问题描述】:

我有一个ListView,我有一个自定义的ViewPostView

我将如何创建一个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(),但也许我过早地访问了视图?

【问题讨论】:

    标签: java android xml layout


    【解决方案1】:

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

    【讨论】:

    • 我不确定我是否遵循。这一行:this.postImagePreview = (ImageView)findViewById( R.id.new_post_image_preview ); }PostView.class 内部被调用和定义。因此,我不确定该特定 XML 何时可以访问。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • PostView 内。你会看到,在我创建了一个新的PostView 之后,我调用了` p.setRenderMode( PostView.MODE_TEXT | PostView.MODE_IMAGE );, before I attach it to the ListView` 作为页脚。
    • 啊,是的,我明白了。看来您当时正试图过早地获得视图。如何改用 oncreate() 方法。我认为 View 对象有其中之一。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多