2014-12-02 58 views
1

我已经创建了xml-layout文件,其中包含View之类的评论框。我想在getView()方法内多次创建动态布局(评论框)。我如何在getView()方法中动态创建它?如何在android中的getview()方法内多次动态创建xml布局?

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

我的适配器代码链接低于:

http://pastebin.com/aAYdPbn9

+0

你不能创建XML代码布局...但你可以创建视图代码......无论如何,问题不清楚 – Selvin 2014-12-02 12:28:22

+0

我在xml文件中有一个看起来像评论框的布局。 我想多次动态创建此评论框。 – Malay 2014-12-02 12:29:47

+0

真正的程序员不使用术语:“它不工作”... – Selvin 2014-12-02 12:31:34

回答

2

我看到你三种方法。正如在评论中讨论你的问题的标题是误导性的,所以这是我认为:

  • 你有你想要显示
  • 每张卡可能有评论列表卡的列表

因此,根本的问题是,你有一个二维数据结构,要使用一维UI组件,你的情况一个ListView显示。

你可以解决你的问题:

  1. 使用的ExpandableListView,其中卡家长和意见是子元素。参见[1]的例子。

  2. 拼合您的数据层次结构。所以你只有一个项目列表,其中的卡被视为你的评论的“标题”或“分隔符”。您需要覆盖[2],在这种情况下,您的适配器能够返回两个不同的视图。在getView()方法然后需要做一些事情,如:

    if(list.get(position) instanceOf Card) return getCardView(...); else if(list.get(position) instanceOf Comment) return getCommentView(...);

  3. 动态渲染的评论到卡视图中的容器。因此,在您的卡片视图的布局文件中,使用ViewGroup,例如一个LinearLayout并给它一个唯一的ID,如“llComments”。为您的评论有一个分离的布局文件。然后在你当前的代码中,你可以膨胀这个文件,并将返回的视图添加到容器(llComments)。我认为这是您正在寻找的解决方案。所以,在你的代码,这样做:

    ​​

[1] http://www.vogella.com/tutorials/AndroidListView/article.html#expandablelistview_concept [2] http://developer.android.com/reference/android/widget/BaseAdapter.html#getViewTypeCount()

+0

谢谢你给出答案。你可以有任何代码链接或演示?我真的想尝试这种方法... – Malay 2014-12-02 12:52:05

+1

有很多教程,展示了适配器的正确使用。如果你可能会进一步强调你想达到的目标,我可以用你的案例的例子来扩展我的答案。否则,这个博客显示了一个简单的例子http://androidadapternotifiydatasetchanged.blogspot.de – a11n 2014-12-02 12:59:57

+0

请你详细说明这件事吗?如果你了解我的编码和我想做什么? – Malay 2014-12-02 13:10:21