首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android中的getview()方法中多次动态创建xml布局?

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

Stack Overflow用户
提问于 2014-12-02 12:23:06
回答 1查看 576关注 0票数 1

我已经创建了xml-layout文件,其中包含View类评论框。我希望在getView()方法中多次创建动态布局(注释框)。如何在getView()方法中动态创建它?

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

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

http://pastebin.com/aAYdPbn9

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-02 12:43:48

我给你看了三条路。正如评论中所讨论的,您问题的标题具有误导性,因此我认为:

  • 您有一个要显示的卡片列表。
  • 每一张卡片都可能有一个评论列表。

因此,根本的问题是,您有一个二维数据结构,您希望使用一维UI组件(在您的例子中是ListView )来显示它。

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

  1. 使用ExpandableListView,其中卡片是父元素,注释是子元素。一个例子见1。
  2. 夷平您的数据层次结构。因此,您只有一个项目列表,其中卡被视为“标题”或“分隔符”的评论。您需要覆盖2,在这种情况下,Adapter能够返回两个不同的视图。然后,在getView()方法中,您需要执行如下操作: if(list.get(position) instanceOf Card) return getCardView(...); else if(list.get(position) instanceOf Comment) return getCommentView(...);
  3. 动态地将注释呈现到卡视图中的容器中。因此,在您的卡片视图的布局文件中,使用ViewGroup,例如,一个LinearLayout,并给它一个唯一的id,比如"llComments“。为您的注释设置一个单独的布局文件。然后,在当前代码中,您可以膨胀该文件,只需将返回的视图添加到容器(llComments)中即可。我认为这是你正在寻找的解决方案。因此,在您的代码中,执行如下操作: View commentConvertView = inflater.inflate(R.layout.list_item_comment, ...); ViewGroup comments = (ViewGroup) convertView.findViewById(R.id.llComments); comments.removeAllView; for(list.get(position).getComments()){ //bind the data to commentConvertView comments.add(commentConvertView); }

1 2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27249397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档