我可以在RecyclerView.Adapter中使用Cursor来绑定笛卡尔积(两个连接表)吗?

时间:2015-08-05 06:52:26

标签: android sqlite join cursor

也许我并不完全理解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

0 个答案:

没有答案