我有两个具有1:1关系的表,正在使用内容提供程序和cursorloader。
如何进行联接查询以与游标加载器一起使用? 我可以使用内容提供程序内部的rawSql以某种方式破解它,但是如何在游标加载器构造函数中做到这一点超出了我的范围。
非常感谢 !
private static final String CREATE_TABLE_ARTICLES = "create table "
+ TABLE_ARTICLES + "("
+ COLUMN_ARTICLE_ID + " integer primary key autoincrement, "
+ COLUMN_URL + " text not null unique, "
+ COLUMN_TITLE + " text not null, "
+ COLUMN_PRICE + " text not null, "
+ COLUMN_ADDED + " text not null, "
+ COLUMN_IMG_URL + " text);";
private static final String CREATE_TABLE_ARTICLE_DETAIL = "create table "
+ TABLE_ARTICLE_DETAILS + "("
+ COLUMN_ARTICLE_DETAIL_ID + " integer primary key autoincrement, "
+ COLUMN_DESC + " text not null, "
+ COLUMN_LOCALITY + " text, "
+ COLUMN_TYPE + " text not null, "
+ COLUMN_SELLER + " text not null, "
+ COLUMN_SELLER_PHONE + " text, "
+ COLUMN_IMAGE_COUNT + " integer default 0, "
+ COLUMN_ARTICLE + " integer, foreign key (" + COLUMN_ARTICLE + ") references " + TABLE_ARTICLES + "(" + COLUMN_ARTICLE_ID + "));";
最佳答案
实际上,您不必使用自定义任务加载器。
简而言之,一种解决方案是创建一个Uri“content://AUTHORITY/TableArticlesWithDetail”。
然后在您的内容提供程序中,检查该Uri并执行原始SQL进行联接。
有关详细信息,请参见how to use join query in CursorLoader when its constructor does not support it。