【问题标题】:Proper way to handle a list hierarchy处理列表层次结构的正确方法
【发布时间】:2011-06-04 16:58:23
【问题描述】:

我想问一个关于处理具有层次结构的列表的正确方法的一般性问题。我现在这样做的方式是通过捆绑调用相同的活动来处理下一个查询,以便我可以深入了解列表。我想知道是否有更好的方法来处理像我这样的列表。我应该使用多项活动吗? (不知道列表的深度)或者只是在用户选择列表项时重新查询我的数据。这个解决方案的问题是记住选择的列表项和手机上的后退按钮。我确信我遗漏了一些明显的东西,但我是 Android 新手。任何帮助或建议将不胜感激。所以这就是我现在要做的:

  1. 查询数据并在MainActivity 中显示列表,并带有根项。
  2. 用户点击其中一个项目,获取该项目的索引并调用 MainActivity 并使用包含所选项目索引的包。
  3. 用新项目查询数据并在MainActivity中显示新列表。
  4. 冲洗并重复...

此外,我的列表深度超过两层,所以我认为 ExpandableListView 已经出局了。

【问题讨论】:

    标签: android listview android-activity listactivity


    【解决方案1】:

    ExpandableListView 只支持两层深度的原因之一是,它非常很难让 n 层树对用户友好。试想一下,如果他或她达到 5 级,用户屏幕上的质量。

    但是,尽管如此,这是我将采取的方法。我还没有实现它,但这应该是可行的。

    1. 在顶部引入“导航栏”(就像 Windows 资源管理器有,或某些网站有):

      根 > 项目 1 > 子项目 2 > ...

    2. 使用`扩展列表显示当前级别和下一个级别。

    3. 如果用户点击该项目,您将使数据无效并重新填写ExpandbleListView 下一级。

    她就是一个例子:

    > Root 
    ---------------
    Item 1
       Subitem 1
       Subitem 2
       Subitem 3
    Item 2 
       Subitem 4
       Subitem 5
    Item 3
       Subitem 6
    

    用户点击Subitem 4并看到:

    > Root > Item 2
    ---------------
    Subitem 4
       SubSubItem 1
       SubSubItem 2
       SubSubItem 3
    Subitem 5
       SubSubItem 4
       SubSubItem 5
    

    这实现起来并不简单,但也不应该太难。这在一个 Activity 内提供导航并使用高度优化的ExpandableListView 控件。您只需要实现自定义适配器。

    【讨论】:

    • 我也应该说我不需要或不想在列表中显示父级。换句话说,正如您的示例所示,我不需要在列表中显示第 1、2 或 3 项。当他们点击项目 1 时,我只是显示项目 1 中所有项目的列表。当他们点击返回按钮时,我会显示项目 1、2 和 3。这有意义吗?
    • 其实我越读你的评论,你真的和我没有什么不同。您是否建议我递归调用此活动或重新查询。我仍在寻找技术答案,而不是 UI。谢谢
    • 这个想法是重新刷新相同的ExpandableListView。它的不同之处在于它不会构建可能包含大量活动的任务。
    • 您好!我目前需要实现类似树的小部件,这可能是解决方案,您能否详细说明如何刷新导航栏,因为您说您只需要实现适配器???
    【解决方案2】:

    如果您的层次结构不深,只有 2 个级别,请使用 ExpandableListView

    【讨论】:

    • 抱歉,我应该提到我的列表有两层以上的深度。感谢您的回答。
    • 这只是评论,不是答案。我认为这是移动设备中的一个问题——比如应用程序暴露了深层的对象层次结构。但我喜欢你用上面的 ascii 绘制的设计,带有一个面包屑和一个可扩展的列表,可以进入下一个层次。似乎相对容易的方法,管理光标,从孩子那里获取它们等等,带有面包屑路径的每个元素的文本视图或按钮。
    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 2023-03-28
    • 2023-03-14
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多