Android Treeview

问题描述 投票:40回答:10

我知道有ExpandableListView但它只支持最多2个级别。我需要一个真正的树视图垂直列表,至少最多约5个级别(越多越好)。

有什么建议?

编辑:

我看到有关使用自定义适配器并根据项目级别设置填充的说明。

我有一个没有排序的ArrayList对象具有ID和父ID,我也动态地向这个数组添加项目。

谁能给我一些我可以这样做的例子?

java android treeview
10个回答
17
投票

我遇到过同样的问题。你可以查看我的实施AndroidTreeView

  • 它的N级树。
  • 节点的自定义样式
  • 旋转后保存状态


1
投票

我首先要使数据结构更能代表它的含义。因为你有一个项目数组,每个子项都有自己的项目数组,每个项目都有自己的数组等。我考虑使用一个有两个成员的类:一个表示这个特定项目的数据的对象和一个数组持有物品的孩子。每个孩子本身就是班级的一个实例,因此它也可以生孩子。

private class ParentAndKids {Object parent;阵列孩子; }

然后,您的适配器将具有一个ParentAndKids对象数组,表示顶层。您可以根据扩展的父项添加和删除列表项。


14
投票

我们公司也为此开放了解决方案。它作为库提供,因此非常易于使用:http://code.google.com/p/tree-view-list-android/


10
投票

我为我解决了这个问题,发表了类似的帖子:other thread


6
投票

回答我自己的问题,因为我们在几个月前实施了这个问题。

qazxsw poi在一个开源项目中。


4
投票

我找到了一个更容易解决这个问题的方法,因为我自己在编码技巧方面有点中间。在我的情况下,我需要一个以Windows为主题的树视图,在集思广益之后,我几乎无需任何编码即可实现!

这里的诀窍是:使用WebView和嵌入式HTML页面显示自定义树视图,并使用Android的超级便捷JavaScript通信接口来接收选择和点击:Our implementation

借助这种功能,我们可以利用Web上的大量JS / CSS控制片段。 Proof of Concept Example on Android-er Blog

很多可能性和功能与Android在那里,快乐的编码!


3
投票

我发现下面的链接非常非常有用。它描述了在二维数据结构(通常是数据库表)中存储树结构的替代方法。

我想你会发现这个范例易于理解和实施。

Themeable Windows7-Style jQuery TreeView control -- jsTree

至于如何在Android中可视化这是另一个问题。如果“填充”列表项解决方案不够,我可能会从头开始编写自己的小部件。


3
投票

我认为多级可扩展列表已经正确完成它实际上工作并且看起来很棒。这是http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/的另一个例子


2
投票

我同意pjv,至少对于手机大小的设备。最好组织小部件以在ListView中一次显示一组兄弟姐妹。这可以在一个跟踪其在树中的位置的活动中完成。它可以显示带有面包屑的标题,显示当前显示的项目的父项的路径。

多级树视图可能适用于平板设备,但是手机没有足够的空间来支持建议的5个级别(一切都必须足够大以适应手指)。

但是,如果您在树视图上设置,请不要查看子类化ExpandableListView。它通过将父索引和子索引(每个int)打包成一个long来内部运行。这种内部表示使得几乎不可能超出2个级别。


© www.soinside.com 2019 - 2024. All rights reserved.