【问题标题】:How to create a N-level dynamically changing listview如何创建N级动态变化的listview
【发布时间】:2025-11-24 12:45:02
【问题描述】:

我在我的项目中遇到了问题。我想做的是,
我需要解析一个对列表视图的 json 响应。

单击该行时,我将获得一些 id,现在我需要使用该 id 调用另一个 Web 服务,它应该显示另一个列表。假设我单击了第一行,即 Board“A”。那么下一个 Listview 应该是 A 的子列表。它可能如下所示

A1、A2 等可能有也可能没有子菜单。

我可以从单击的行中获取 id。如果列表为空,则意味着不再有子菜单。 我不知道如何设计这个系统?有人有什么主意吗?提前致谢

PS:我将不得不进行不同的 web 服务调用以获取每个子菜单,这些子菜单取决于从 listview 行单击传递的 ID

【问题讨论】:

    标签: android json listview android-listview multi-level


    【解决方案1】:

    一些帮助您入门的想法:

    1. 不要使用ListView,而是查看GridView。 ListView 不支持多于一列(您必须手动支持),为此目的引入了 GridView。

    2. 假设您的初始列表显示在其自己的活动中。这意味着您有一个活动,它在其onCreate() 上查询网络服务,然后在从网络服务异步返回结果时在 ListView/GridView 中显示结果。

    3. 将子菜单放在自己的活动中会很方便。这意味着您应该为子菜单创建另一个活动(也许它可以与第一个活动共享代码,甚至可以从它派生以减少代码重复)。该活动将在其Intent 中接收一个参数(查看Intent.putExtraIntent.getExtra),它告诉它单击了哪一行(它通常应该包含您将要传递给Web 服务的字符串过滤器)。创建此活动后,在其onCreate 中,它应该像第一个活动一样查询网络服务,并在其自己的 ListView/GridView 中显示其结果。

    4. 要连接两个活动,您需要在第一个活动中捕获 on click 事件,确定点击了哪一行,然后创建一个 Intent 来显示第二个活动,传递额外的和显示出来。

    5. 这种方法可以让用户在完成第二个活动后使用返回键关闭它。关闭后,用户将返回到第一个活动,他们可以在其中点击不同的行。

    【讨论】:

    • 这只能在两级使用对吧?这里我可能有 n 级子菜单
    • 这可以在任意多个级别上工作。您可以从每个活动中创建子菜单的新活动。 Android 将您的所有 Activity 保存在一个堆栈中,因此用户可以轻松地解除它们并返回到层次结构中他想要的位置,这会自动为您管理。
    • 另外注释,如果你计划有N个级别,你不需要实施N个不同的活动。它们通常都共享相同的代码,只是不同的实例。使用 Intent extras 在创建时为您的活动运行时参数提供。
    • 救生答案 :) 非常感谢。您的回答中提到的 5 点正是我想要的。 :)