在SQLite中存储arraylists的arraylist

时间:2012-11-10 06:56:35

标签: java android xml sqlite

我是Android开发的新手,我正在开发一个备忘录/笔记记录应用程序,允许用户包含主题标签,然后通过所述主题标签浏览已保存的笔记。

我已经有一个笔记应用程序工作,只保存SQLite数据库中的笔记,但我打算通过在我的每个笔记对象(已经存储在arraylist中)中包含一个主题标签列表来存储主题标签。 。

我的问题是,我如何将这些arraylists的arraylists(注意标签arraylists的arraylists)存储到SQLite数据库中?

2 个答案:

答案 0 :(得分:2)

假设您有一个用于备注的sql表,您应该创建另一个表来存储主题标签。您可以通过保留一列来存储标签所属的注释ID,从而将每个主题标签链接到它的注释。结构基本上应该是这样的:

注意表:

note_id | note

Hashtags表:

hashtag_id | hashtag | note_id

答案 1 :(得分:1)

这是一个简单的技巧:只需将所有主题标签存储为单个字符串。

例如,假设一个音符有4个标签 - #study, #homework, #school, #math

因此,您只需将它们存储为单个字符串,如:

String hastags="study#homework#school#math" 

现在将此字符串存储在sqlite数据库中,作为每个注释对象的hastag列。

Java允许您轻松解析字符串,因此当您检索注释时,您可以获取它的hashtag列,并根据分隔字符将其分隔为字符串数组(每个主题标签包含一个字符串元素)( “#”在这种情况下)像这样:

String hastags[]= hashtagStringFromDB.split("#");

现在,您在单个字符串数组中拥有该注释对象的所有主题标签,您可以使用hashtag[0], hashtag[1]...etc

轻松完成

另一个选项是创建另一个hashtags表。每个#标签都会使用唯一标识符(外键)进入此表,以将其链接到notes表中的注释。因此,您可以使用特定注释的note_id查询此表,它将返回属于该注释的所有主题标签。