【问题标题】:Is it possible to have different child views for an ExpandableListView in android based on a value from the parent adapter?是否可以根据父适配器的值在 android 中为 ExpandableListView 提供不同的子视图?
【发布时间】:2013-09-28 09:05:06
【问题描述】:

在我正在开发的应用程序中,我目前使用一个按钮来打开一个新活动,其中包含一个简单的可过滤列表视图。当用户单击列表视图中的一行时,选定的值将返回到前一个活动,然后对其进行处理。这意味着我有两个活动来完成一个功能。

我一直在寻找一种将两者优雅结合的方法,并认为可扩展列表视图是可行的方法,但我不确定一件事:getChildView 是否可以被覆盖(自定义可扩展列表视图)以膨胀不同的视图基于父组适配器中的值?

我的适配器从 sqlite 数据库中选择两个值,一个称为“Type”的整数和一个称为“Move”的字符串。我只显示“移动”,但将“类型”绑定到隐藏的 TextView。如果我实现单个可扩展列表视图,我需要以某种方式将“类型”传递给下拉列表,以便它可以显示不同的子视图(允许用户根据类型值输入重量、时间或次数) “1”、“2”或“3”。

这可以通过覆盖 getchildview 方法的自定义 ELV 实现吗?我看到您可以获得父位置和子位置,但是除了在单击父时使用全局变量之外,我看不到任何传递给子以知道值、文本等的东西父母?

我在这里也找到了一个不错的实现:https://github.com/tjerkw/Android-SlideExpandableListView

但是尝试覆盖它似乎太复杂了,所以如果可能的话,我将尝试一个标准的可扩展列表视图。

谢谢!

编辑:这是我所说的一个糟糕的模型。第一个 drop 的视图只有一个框和一个按钮,第二个视图可能有一个框和一个按钮,但第三个视图有两个框,一个用于重量,一个用于代表,然后是一个按钮。:

【问题讨论】:

  • 您的设置不清楚,您可能需要添加有关您计划的交互的详细信息。根据我的理解,您想要(根据组数据中存在的参数(类型)为子视图(全部?)膨胀特殊布局),这是可能的(但通过扩展适配器而不是小部件本身)。

标签: android expandablelistview


【解决方案1】:

这样做的方法是为您希望在 ExpandableListView 的一项中显示的所有可能类型创建一个视图布局。

您只需覆盖适配器getChildView 并在其中选择类型和移动。然后将视图的各个部分设置为 View.setVisibility(View.GONE) 以确保显示正确的视图。

【讨论】:

  • 我刚刚在fluidui.com 上发布了我想要谈论的内容的快速模型。如果只有一个字段,则行可能保持不变,但如果我需要两个或更多条目(重量和时间、重量和代表等),则需要显示不同的布局。所以如果我重写getchildview,我可以将额外的数据项传递给构造函数(getChildView)?
  • 我明白你的意思。我会为该项目创建一个布局,其中包含一个项目可以具有的最大复杂性。在您的情况下,两个框和一个按钮。然后,在getChildView() 中,您决定应该显示项目的哪个部分(View.setVisibility(View.VISIBLE))以及不应该显示哪些部分(完全消失,不仅不可见:View.setVisibility(View.GONE)
  • 太棒了,我这周必须试一试,如果可行,我会接受你的初步回答。谢谢!
猜你喜欢
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 2021-12-11
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
相关资源
最近更新 更多