2

在以下情况下如何合并游标加载器以获得一个游标加载器。我不止一个调用内容提供者来创建我的数据库适配器以与简单的游标适配器一起使用。请在下面查看我的代码。

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {

    productIdCursor.moveToFirst();
    CursorLoader cursorLoader;

    // CursorLoader cursorLoader;

    int i = 0;

    while (productIdCursor.isLast()) {

        String[] Projection = { "p.id as _id", "p.name", "p.subTitle",
                "p.textColour", "pi.thumb" };

        String userSelectionCritera = "p.id = pp.prod_id and pp.imag_id = pi.id and p.id= ? and p.id = pc. prod_id and pc.coun_id = ?";

        String[] selecttionArgs = new String[] {
                productIdCursor.getString(productIdCursor
                        .getColumnIndex("prod_id")),
                String.valueOf(countryId) };

        cursorLoader = new CursorLoader(getActivity(),
                DatabaseContentProvider.CONTENT_URI_PRODUCTCATEGORY,
                Projection, userSelectionCritera, selecttionArgs, null);

        productIdCursor.moveToNext();

    }




    return cursorLoader;
4

1 回答 1

1

你不能真正合并游标加载器,但你可以尝试一些不同的东西。您最好的选择可能是将您的 SQL 选择语句从 更改p.id = ?p.id in (...id list here...). 您可以通过查看此答案为 id 列表创建一个字符串。

您还可以创建自己的自定义加载器,该加载器接受一系列产品 ID,并在后台单独加载它们,将它们合并到 MergeCursor 对象中。这将为您提供一个加载器和一个游标,其中包含您需要的所有数据。IMO 这第二种方法真的很混乱。如果这是唯一可行的解​​决方案,那么您可能应该返回并查看您的数据库表模式。

于 2013-02-16T18:33:14.453 回答