使用可显示分组内容的可点击列表项动态生成标题

时间:2014-01-05 23:56:26

标签: java android sqlite

对于模糊标题的道歉,但这有点难以解释......虽然我会尽我所能!

我有一个任务是在应用程序屏幕上复制某些特定的功能,因此虽然执行此操作的方法可能看起来很奇怪,但是没有允许从特定任务变化。

首先,从SQLite数据库中检索所有数据。这个检索部分没问题。数据库中的可用列是:

pk (primary key)
heading_id
heading_name
sub_heading_name (can be duplicated on multiple rows with different contents)
sub_heading_contents

最终屏幕应显示以下内容:

<heading_name>
    <clickable List(View?) of abbreviated sub_heading_contents>
<next heading_name>
    <next clickable list>
<etc...>

所以基本上只是一个标题列表和sub_heading信息的简要描述。例如,这可能如下所示:

Food
    Sticky Date Pudding is a...
    Chocolate Cake tastes...
    Ice Cream can be...
    Pizza is often...
    Pasta once was...
    Burgers are...

现在,奇怪的是,当您看到子标题详细信息列表时,当您单击其中任何一个时,您将进入一个屏幕,该屏幕显示来自同一名称的每个子标题的信息。换句话说,单击食物(布丁/蛋糕/冰淇淋)下的前3个子标题描述将带您到子标题名称“甜点”下的另一页,同时在同一页面上列出所有3个描述,同时点击最后3个(披萨/意大利面/汉堡包)将带您到另一个页面,子标题名称为“主要”。因此,您会以一种看似无序的方式在大列表中看到所有子标题描述,但它们按隐藏的子标题名称分组,只有在您单击它们以进入下一页时才会显示这些名称。

所以现在我的问题是......为了创建这样的列表,存储和引用从数据库中检索的数据的最佳方法是什么?我已经尝试了一些地图,树图,自定义类,列表等等的变体,但是在这个过程中,所有这些都似乎都会在某些时候出现(毫无疑问,因为我没有正确使用它们!)。

我希望我有一些代码可以粘贴,但是我现在甚至不知道从哪里开始都是如此混乱。关于如何完成这样的事情的任何甚至模糊的建议将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:1)

您似乎具有三层结构,其中只有两层直接由用户可见。你的散文中的这种分层结构的一个例子是:

食物 - &gt;甜点 - &gt;布丁

就本回答而言,我将称之为topLevelmidLeveldetail层。我没有最模糊的概念,这是如何映射到你的条款的,因为你的散文暗示了这两个&#34; Dessert&#34;和&#34;布丁&#34;是&#34;小标题&#34;,它混淆了水域。如果&#34;布丁&#34;出现在用户界面中,&#34;甜点&#34;不是,它们是不同的东西,应该在数据模型中这样对待。

因此,这似乎是三个数据库表,每个层一个,具有经典的1:N外键关系(即midLevel表有一列包含topLevel的键包含它)。或者,将整个树表示保存在单独的文件中,采用JSON或XML格式,而不是数据库。

从内存数据表示中,TopLevel包含MidLevel个对象的集合,每个对象都有Detail个对象的集合(再次,使用我的术语,而不是你的)。

就UI而言,由于您已选择仅显示两个层,因此可以使用ExpandableListViewTopLevel个实例驱动父节点和Detail个对象的聚合集合(用于驱动子节点的MidLevel中的所有TopLevel个对象。

您所需的用户界面存在的问题是,您必须在内存中所有 TopLevelMidLevelDetail个对象,至少要知道他们的父子关系和足够的数据来驱动ExpandableListView UI的程度。如果您的数据模型很大,这将是昂贵的。