如何将光标数据映射到另一个游标?的Android

时间:2015-06-28 22:29:49

标签: android database sqlite

如何将cursorA中的数据映射到cursorB,因为cursorA的列与cursorB不同?

例如:CursorA = {“columnA”,“columnB”} | CursorB = {“cA”,“cB”,“cZ”}

我希望CursorB充当CursorA的外观,所以当我请求时,假设来自CursorB的列cB我实际上从CursorA访问columnA。

修改

我使用CursorWrapper管理一种方法。基本上,需要的是覆盖getColumnIndex方法,这样,当客户端要求他想要的列idx时,你从当前光标返回一个。下面的代码显示了它:

public class CustomCursor extends CursorWrapper {
    /**
     * Creates a cursor wrapper.
     *
     * @param cursor The underlying cursor to wrap.
     */
    public CustomCursor(Cursor cursor) {
        super(cursor);
    }

    @Override
    public int getColumnIndex(String columnName) {
        if (SearchManager.SUGGEST_COLUMN_TEXT_1.equals(columnName)) {
            return super.getColumnIndex(ContactsContract.Profile.DISPLAY_NAME_PRIMARY);
        } else if (SearchManager.SUGGEST_COLUMN_TEXT_2.equals(columnName)) {
            return super.getColumnIndex(ContactsContract.Profile._ID);
        }
        return super.getColumnIndex(columnName);
    }
}

如果有更好的方法,我会很乐意尝试。

1 个答案:

答案 0 :(得分:2)

你也可以这样查询:

"select " + 
ContactsContract.Profile.DISPLAY_NAME_PRIMARY + " as " + SearchManager.SUGGEST_COLUMN_TEXT_1 ", " +
ContactsContract.Profile._ID + " as " + SearchManager.SUGGEST_COLUMN_TEXT_2 + ","
.
.
.