android - 处理列表层次结构的正确方法

标签 android listview android-activity listactivity

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

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

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

最佳答案

ExpandableListView 仅支持两层深度的原因之一是,非常难以使 n 层树变得用户友好。想象一下如果他或她进入第 5 级,用户屏幕上的质量。

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

  1. 在顶部引入“导航栏”(就像 Windows Explorer 或某些网站那样):

    Root > item 1 > subitem 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 控件。您只需要实现自定义适配器。

关于android - 处理列表层次结构的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238116/

相关文章:

android - 帮助传递 ArrayList 和 parcelable Activity

java - 重写 Android 函数以启动 Activity 而不是显示文本

Android - 在 Activity 中调用 finish() 时释放内存

Android - 从 ListView 中的项目检索到的数据不正确

android linearlayout on relativelayout 使 relative 消失

android - 在android中打开通知时页面不刷新

java - 存储/检索椭圆曲线加密 (ECC) 公钥和私钥

android - 在 ImageView 中使用位图时出现 OutOfMemory 问题

android - Android Studio隐藏 native 源文件夹子目录中的文件

android - 从适配器的项目中获取 ImageView 时获取 null。为什么?