0

Algorithm question here.

I'm creating an app that shows a legal document, with tabs for navigation (TOC, bookmarks, etc). Inside the TOC tab, I need to show a multilevel table of contents. At the 'leaf' of the toc, I need to show a TextView

So, I could have:

tab1: List -> List -> List -> List -> List -> TextView

or

tab1: List -> List -> List -> TextView

or

tab1: List -> TextView

depending on the chapter, section, subsection, subsubsection structure of the book I'm showing.

Now, it doesn't matter how deep you are, the TabHost needs to be ALWAYS PRESENT, to provide the main navigation. (Yes, I asked, and I need to use the tabs, not a menu.)

The question:

How do you implement the recursive List inside the FrameLayout of a tab? Or should I use a ListView styled as tabs and just not use the TabHost?

Ideas?

Thanks!
llappall

4

1 回答 1

1

好的。第一个您不能放入ListViews,ListViewsScrollViews任何GridViews可滚动的内容(即ListView项目不能是ListView)。它可能会编译,可能会运行,但结果不会是您期望或想要的。这是因为 aListView的高度不能设置为WRAP_CONTENT

您可以有一个两级列表 ( ExpandableListView),但如果您需要比这更多的级别,您将必须自己通过扩展ListView或来实现该功能ExpandableListView

您还可以有分段列表和具有多种项目类型的列表,但无法使用默认的 SDK 组件来获得 5 级列表。

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

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

而不是调用内置ListActivity方法。

只需将您ListView放在FrameLayout布局文件中即可。如果您有三个选项卡并且ListView是 中的第一个元素FrameLayout,那么它将显示为第一个选项卡的内容。如果它是第二个元素,它将是第二个选项卡的内容,依此类推。

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

于 2011-03-21T21:52:30.497 回答