也许我并不完全理解Cursor
的目的和可能性。我对这个问题感兴趣。
我有两张桌子和一对多的关系
Content
------------------
id
article_id
index
type
text
images
Images
------------------
id
content_id
content_index
image_index
url
title
所以,我希望看到id为1的文章的所有内容。
SELECT * FROM content
WHERE article_id = 1
结果行:
id article_id index type text images
-------------------------------------------------------------
1 1 0 "text" "Text1" NULL
2 1 1 "text" "Text2" NULL
3 1 2 "text" "Text3" NULL
好的,接下来在我的CursorRecyclerViewAdapter
中,我为结果中的每一行获取光标并将其绑定到UI
:
@Override
public void onBindViewHolder(ViewHolder viewHolder, Cursor cursor) {
String type = cursor.getString(TYPE);
String text = cursor.getString(TEXT);
//......
}
但是如果内容有类型"图像",我可以使用JOIN连接表格并获得结果笛卡尔积,类似于:
id article_id index type text url title
-------------------------------------------------------------------------
1 1 0 "text" "Text1" NULL NULL
2 1 1 "text" "Text2" NULL NULL
3 1 2 "images" NULL "image1.png" "img1"
3 1 2 "images" NULL "image2.png" "img2"
3 1 2 "images" NULL "image3.png" "img3"
4 1 3 "text" "Text3" NULL NULL
在这种情况下如何使用光标
onBindViewHolder(ViewHolder viewHolder, Cursor cursor);
这个问题有典型的解决方案吗?我正在寻找StackOverflow的解决方案,但没有结果,我开始怀疑在这种情况下,你可以使用Cursor
?
更新
如果使用GROUP BY index
我没有看到内容行的所有图片:
id article_id index type text url title
-------------------------------------------------------------------------
1 1 0 "text" "Text1" NULL NULL
2 1 1 "text" "Text2" NULL NULL
3 1 2 "images" NULL "image1.png" "img1"
4 1 3 "text" "Text3" NULL NULL