在选项卡视图中显示递归列表

时间:2011-03-21 19:54:02

标签: android list android-tabhost tabview

算法问题在这里。

我正在创建一个显示法律文档的应用程序,其中包含导航标签(TOC,书签等)。 在TOC选项卡中,我需要显示多级目录。在toc的'叶子',我需要显示TextView

所以,我可以:

tab1:列表 - >清单 - >清单 - >清单 - >清单 - > TextView的

tab1:列表 - >清单 - >清单 - > TextView的

tab1:列表 - > TextView的

取决于我所展示的书的章节,小节,小节,小节结构。

现在,无论你有多深,TabHost都需要始终存在,以提供主导航。 (是的,我问,我需要使用标签,而不是菜单。)

问题:

如何在选项卡的FrameLayout中实现递归List?或者我应该使用ListView样式选项卡,只是不使用TabHost?

想法?

谢谢!
llappall

1 个答案:

答案 0 :(得分:1)

好。您无法将ListViews置于ListViewsScrollViewsGridViews或任何可滚动的内容(即ListView项目不能ListView )。它可能会编译,它可能会运行,但结果将不是您所期望或想要的。这是因为ListView的高度不能设置为WRAP_CONTENT

您可以拥有两个级别的列表(ExpandableListView),但如果您需要更多级别,则必须通过扩展ListViewExpandableListView来实现自己的功能。

您还可以使用分段列表和包含多个项目类型的列表,但无法使用默认SDK组件来获取5级列表。

第二:是的,ListView内可以有一个TabHost。您将无法使用ListActivity,但这只是意味着您必须直接调用ListView方法:

ListView myList = findViewById(R.id.myList);
myList.setAdapter(myListAdapter);

而不是调用内置的ListActivity方法。

只需将ListView放在布局文件中的FrameLayout内即可。如果您有三个标签,而ListViewFrameLayout中的第一个元素,则它将显示为第一个标签的内容。如果它是第二个元素,它将是第二个标签的内容,依此类推。

使用内置组件实现递归列表的唯一方法是使用单个ListView,然后在用户选择项目时更改ListView的适配器的内容(实质上)使用单个ListView的下钻菜单。您还需要使用onBackPressed捕获后退按钮,以允许用户导航回列表,或在某处提供后退按钮。