如何在android的getview()方法中多次动态创建xml布局?

如何在android的getview()方法中多次动态创建xml布局?,android,android-view,android-xml,layout-xml,Android,Android View,Android Xml,Layout Xml,我已经创建了xml布局文件,其中包含视图类注释框。我想在getView()方法中多次动态创建布局(注释框)。如何在getView()方法中动态创建它 在getview()方法中,我多次使用代码动态生成特定的View,但它不起作用。请给我提个建议 我的适配器代码链接如下: 我认为有三种方法适合您。正如评论中所讨论的,您的问题的标题具有误导性,因此我假设: 您有一个要显示的卡片列表 每张卡片可能有一个评论列表 因此,潜在的问题是,您有一个二维数据结构,您希望使用一维UI组件来显示它,在您的示例中

我已经创建了
xml布局
文件,其中包含
视图
类注释框。我想在
getView()方法中多次动态创建布局(注释框)。如何在
getView()方法中动态创建它

getview()
方法中,我多次使用代码动态生成特定的
View
,但它不起作用。请给我提个建议

我的适配器代码链接如下:


我认为有三种方法适合您。正如评论中所讨论的,您的问题的标题具有误导性,因此我假设:

  • 您有一个要显示的卡片列表
  • 每张卡片可能有一个评论列表
因此,潜在的问题是,您有一个二维数据结构,您希望使用一维UI组件来显示它,在您的示例中是一个ListView

您可以通过以下方式解决问题:

  • 使用ExpandableListView,其中卡片是父元素,注释是子元素。有关示例,请参见[1]

  • 扁平化您的数据层次结构。因此,您只有一个项目列表,其中卡片在某种程度上被视为您评论的“标题”或“分隔符”。您需要覆盖[2],在这种情况下,适配器能够返回两个不同的视图。在
    getView()
    方法中,您需要执行以下操作:

    if(列表获取(位置)卡实例)
    返回getCardView(…);
    else if(list.get(position)instanceOf Comment)
    返回getCommentView(…)

  • 将注释动态呈现到卡视图中的容器中。因此,在卡片视图的布局文件中,使用视图组,例如LinearLayout,并为其指定一个唯一的id,如“llComments”。为您的评论创建一个单独的布局文件。然后在您当前的代码中,您可以膨胀这个文件,只需将返回的视图添加到容器中(llComments)。我认为这就是你正在寻找的解决方案。因此,在代码中,执行以下操作:

    View commentConvertView=充气机。充气(R.layout.list\u item\u comment,…);
    ViewGroup comments=(ViewGroup)convertView.findViewById(R.id.llComments);
    comments.removeAllView;
    for(list.get(position.getComments()){
    //将数据绑定到commentConvertView
    添加(commentConvertView);
    }

  • [1]
    [2]

    无法从代码创建xml布局。。。但是您可以从代码创建视图。。。无论如何,问题是在xml文件中是否有一个类似于注释框的布局。我想动态多次创建此注释框。真正的程序员不使用术语:
    它不工作
    …您是指适配器的getView()还是片段的getView()?真正的程序员互相帮助,而不是做出不必要的注释。感谢您给出答案。你能有任何代码链接或演示吗??我真的想尝试这种方法…有很多教程演示了适配器的正确使用。如果你可以进一步强调一下你想要实现的目标,我可以用一个例子来扩展我的答案。另外,这个博客展示了一个简单的例子,你能详细说明一下吗?如果你了解我的编码和我想做什么?