我为我的应用创建了一个内容提供程序,我在我的主要活动中使用CursorLoader和listview。列表视图显示一些元素。元素可以绑定到许多标签。
我定义了3个表:Element(_id,description),Tag(_id,description),ElementTag(idElement,idTag)。
在内容提供者的查询方法中,我进行了连接,但由于Element可以有很多标记。我在listview中得到的东西(这也是我的查询结果):
但我想:
我虽然没有在Elements和Tags之间进行连接,但在这种情况下我应该查询Cursor Adapter中每个元素的标签(我猜这很糟糕)。
我还读过一个线程,可能非规范化是最好的主意(在Element表中创建一个包含由逗号分隔的元素标记的列)。但是当我希望获得包含标签的所有元素时,这将会很慢。
也许我必须放下整个CursorLoader的东西,只需要通过连接查询制作一个大的hashmap?
我真的很感激你的想法。
提前感谢您:)
答案 0 :(得分:0)
如果它可以提供帮助,请点击此处:
我不在内容提供程序中的表ELEMENT和TAG之间进行任何连接。我只加载元素,所以在列表视图中每个元素只有一行。 我在CursorAdapter中实现了一个方法loadContent,我在两个哈希映射中加载了我的标签和标签/元素关系表。
在CursorAdapter构造函数中调用此方法,并且在调用onContentChanged()时(由于标志CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER而调用此方法)。
然后在CursorAdapter的bindView方法中,当处理游标当前元素时,由于两个哈希图,我得到绑定到我的元素的所有标记。
如果有人感兴趣,我可以提供一些代码。