搜索需要来自多个游标/表的数据

时间:2010-08-29 13:25:04

标签: android sqlite search cursor

我仍在尝试在我的Android应用中实现搜索功能。到目前为止它还没问题,虽然目前搜索只能查询一个表并显示该表的结果(使用SimpleCursorAdapter的ListView)。

我想要的是能够搜索多个表,但我不知道如何将这些全部放入一个游标或扩展SimpleCursorAdapter以实现多个游标。我看到有一个名为CursorJoiner的类,但我不确定我需要做什么。

谢谢!

我试图制作一个自定义光标[]适配器,但这不会返回任何内容而我的搜索结果是空白的 - 任何人都可以帮忙吗?

public class SearchCursorAdapter extends SimpleCursorAdapter {

private int currentCursor;
private int curPosition = 0;
private int total = 0;
private Cursor[] curs = null;
private Context cont;

public SearchCursorAdapter(Context context, int layout, Cursor c,
        String[] from, int[] to) {

    super(context, layout, c, from, to);
    total = c.getCount();

}

public SearchCursorAdapter(Context context, int layout, Cursor[] c,
        String[] from, int[] to) {

    super(context, layout, null, from, to);
    int l = c.length;
    for (int i = 0; i < l; i++) {

        total += c[i].getCount();

    }
    curs = c;
    currentCursor = 0;
    cont = context;
}

@Override
public View getView(int position, View view, ViewGroup parent) {

    if (currentCursor == curs.length)
        return null;

    if (curs == null) {

        //normal shiz

    }
    else {

        Cursor c = curs[currentCursor];
        c.moveToPosition(curPosition);

        if (c.isAfterLast()) {

            currentCursor++;
            c = curs[currentCursor];
            curPosition = 0;
            c.moveToPosition(curPosition);

        }

        if (view == null) {
            LayoutInflater vi = (LayoutInflater)parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = vi.inflate(R.layout.search_row, null);
        }

        TextView t1 = (TextView)view.findViewById(R.id.rowitem_text1);
        TextView t2 = (TextView)view.findViewById(R.id.rowitem_text2);

        t1.setText(c.getString(1));
        t2.setText("Testing");

        curPosition++;

    }

    return view;

刚刚注意到它实际上不是适配器什么也没有返回,我的搜索功能有问题......

1 个答案:

答案 0 :(得分:2)

  

我想要的是能够搜索   多个表,但我不知道如何   把这一切都放到一个光标或   将SimpleCursorAdapter扩展为   实现多个游标

如果您使用的是SQLite,请在JOIN语句中实施SELECT。如果由于某种原因在内容提供程序中包装了SQLite,请展示另一个内容Uri并支持您的多表搜索。